鼠标移动捕获
我有一个应用程序,使用ShowDialog方法打开一个模态窗体。 显示此表单后,即使光标位于表单外,我也希望捕获鼠标移动。 如何捕捉鼠标移动? 我看到了Capture属性的东西,但我无法让它工作。
[编辑]
如果鼠标移动到表单之外,我希望收到通知。
Capture
属性是正确的方法,但有一些限制。
- 只有前景窗口才能捕获鼠标
- 系统的其他部分可以禁用鼠标捕获
- 每次“鼠标向上”事件发生时,Win32 API函数
SetCapture
都会重置。 我认为这也适用于.NET。
请参阅Capture
属性的备注部分 。
捕获鼠标时,您将收到常规事件但具有更宽的鼠标坐标范围(例如,如果鼠标留在捕获控件中,则为负X位置)
鼠标捕获是脆弱的,因为它具有全球性。 检查是否有其他方法来处理某些事件。 在您的情况下, MouseLeave
或MouseEnter
事件可能就足够了。
您可以只使用静态属性Control.MousePosition 。
您可以使用Cursor.Position属性读取光标的位置,请参阅Cursor.Position