鼠标移动捕获

时间:2009-09-15 10:28:55

标签: c# mouse

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

[编辑]

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

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

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

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

请参阅Capture属性的remarks section

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

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

答案 2 :(得分:0)

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