鼠标移动捕获

我有一个应用程序,使用ShowDialog方法打开一个模态窗体。 显示此表单后,即使光标位于表单外,我也希望捕获鼠标移动。 如何捕捉鼠标移动? 我看到了Capture属性的东西,但我无法让它工作。

[编辑]

如果鼠标移动到表单之外,我希望收到通知。

Capture属性是正确的方法,但有一些限制。

  • 只有前景窗口才能捕获鼠标
  • 系统的其他部分可以禁用鼠标捕获
  • 每次“鼠标向上”事件发生时,Win32 API函数SetCapture都会重置。 我认为这也适用于.NET。

请参阅Capture属性的备注部分 。

捕获鼠标时,您将收到常规事件但具有更宽的鼠标坐标范围(例如,如果鼠标留在捕获控件中,则为负X位置)

鼠标捕获是脆弱的,因为它具有全球性。 检查是否有其他方法来处理某些事件。 在您的情况下, MouseLeaveMouseEnter事件可能就足够了。

您可以只使用静态属性Control.MousePosition 。

您可以使用Cursor.Position属性读取光标的位置,请参阅Cursor.Position