【问题标题】:Mouse movement capture鼠标移动捕捉
【发布时间】:2009-09-15 10:28:54
【问题描述】:

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

[编辑]

我想在鼠标移出表单时收到通知。

【问题讨论】:

    标签: c# mouse


    【解决方案1】:

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

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

    查看Capture 属性的remarks section

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

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

    【讨论】:

    • 只有当光标悬停在申请表之一时才会完成捕获,但这对我来说没问题。我在 Load 事件之后设置 Capture。
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多