2009-09-15 113 views
1

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

[编辑]

我想如果表单以外的鼠标移动通知。

回答

2

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

  • 前台窗口捕获鼠标
  • 鼠标捕获可以由系统
  • Win32 API函数SetCapture的其他部分被禁止被重置每次“鼠标”事件occours。我认为这也适用于.NET。

查看Captureremarks section属性。

当鼠标被捕获时,你会收到通常的事件,但具有更宽的鼠标坐标范围(例如负的X位置,如果鼠标左摄像控制的)

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

+0

只有当光标悬停在某个应用程序表单上时才会执行捕获,但这对我来说可以。 我在Load事件后设置了Capture。 – 2009-09-15 10:57:30