代码之家  ›  专栏  ›  技术社区  ›  Martin Delille

鼠标移动捕获

  •  1
  • Martin Delille  · 技术社区  · 15 年前

    我有一个用ShowDialog方法打开模式窗体的应用程序。 显示此窗体后,即使光标在窗体之外,我也希望捕获鼠标移动。 如何捕获鼠标移动?我看到了Capture属性的一些东西,但我无法使其工作。

    [编辑]

    如果鼠标移到窗体外,我希望收到通知。

    3 回复  |  直到 15 年前
        1
  •  2
  •   Daniel Rikowski    15 年前

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

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

    remarks section 属于 俘获 财产。

    捕获鼠标时,您将收到常规事件,但鼠标坐标范围更宽(例如,如果鼠标位于捕获控件的左侧,则为负X位置)。

    捕捉老鼠是脆弱的,因为它是全球性的。检查是否有其他方法来处理某些事件。也许是 MouseLeave MouseEnter 在你的情况下,事件就足够了。

        2
  •  2
  •   Daniel Brückner Pradip    15 年前

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

        3
  •  0
  •   Jan    15 年前

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