有没有办法检测WPF窗口之外的光标移动事件?我没有试图找出光标是否移动到窗口之外,我只是试图继续订阅移动事件,即使鼠标移动到wpf窗口边界之外。我已经能够找到很多处理窗口内移动的东西,但没有任何东西(至少没有任何实际工作)。即使问题是关于外部运动的问题,它们本质上都只在窗口内工作。wpf窗口边界之外的光标移动事件
因为到目前为止我还没有找到解决方案,所以我一直在使用下面我想到的代码。我不确定这个代码有多高效。我认为,如果系统已经检查鼠标移动,那么添加单独的检查将是低效的。但是,我一直无法进入系统部分,因为我找不到任何好的参考。
注意:我想弄清楚这样做的现有方法。我的代码工作正常,但效率可能不高,因为如果系统中已经有一个事件产生代码,我可以订阅,这个额外的计时器循环是浪费的额外资源。我没有试图检测鼠标是否移动到边界之外,我只是试图记录坐标,而不管鼠标在屏幕上移动的位置。所以,如果鼠标移动到第二台显示器上,远离我的应用程序窗口,我仍然希望事件触发并发生通知。我的计时器实现报告一直都在报告坐标,但是我想确保我没有在已经完成的工作之上添加额外的图层。这似乎是基于那些评论和我收到的答案的重大混淆。
public MainWindow()
{
InitializeComponent();
InitializeCursorMonitoring();
}
private void InitializeCursorMonitoring()
{
var point = System.Windows.Forms.Cursor.Position;
var timer = new System.Windows.Threading.DispatcherTimer();
timer.Tick += delegate
{
if (point != System.Windows.Forms.Cursor.Position)
{
point = System.Windows.Forms.Cursor.Position;
System.Diagnostics.Debug.WriteLine(String.Format("X:{0} Y:{1}",
System.Windows.Forms.Cursor.Position.X,
System.Windows.Forms.Cursor.Position.Y));
}
};
timer.Interval = new TimeSpan(0, 0, 0, 0, 100);
timer.Start();
}
试着捕捉鼠标.. – Sankarann
@Sankarann你能详细点吗? –
看看它... http://stackoverflow.com/questions/942357/what-does-it-mean-to-capture-the-mouse-in-wpf –