如何可靠地检测鼠标何时离开控件?

时间:2009-11-02 14:54:16

标签: c# .net winforms

我有许多含有按钮的ToolStrips控件。当鼠标进入工具条时,我需要显示或隐藏一些按钮。我知道神秘肉是坏的,但这是我必须要做的。

当鼠标进入时,ToolStrip的MouseEnter事件会触发,但鼠标离开时MouseLeave并不总是会触发。我想这可能是因为鼠标已经从一个孩子内部变成了控制之外,没有通过控制本身。

如何可靠地检测鼠标何时离开控件?

3 个答案:

答案 0 :(得分:0)

仅当控件拥有鼠标捕获时,才会触发MouseLeave。

答案 1 :(得分:0)

使用Global Hook怎么样:http://www.codeproject.com/KB/cs/globalhook.aspx

因此,您将能够自己管理正确的结果。

答案 2 :(得分:0)

我会远离全球性的钩子。

引用来自:MSDN

  

注意您应该使用全局钩子   仅用于调试目的;   否则,你应该避免它们。   全局挂钩会损害系统性能   并导致与他人发生冲突   实现相同的应用程序   全局钩子的类型。

一旦您的申请失去了重点,事件就更难以处理。重新评估您的业务规则。

也许您需要做的是在失去焦点时禁用您的应用程序。这将强制用户在使用工具条之前单击或选项卡到您的应用程序。此时,您可以捕获Control.GotFocus事件并执行您想要的任何逻辑。

相关问题