我有许多含有按钮的ToolStrips控件。当鼠标进入工具条时,我需要显示或隐藏一些按钮。我知道神秘肉是坏的,但这是我必须要做的。
当鼠标进入时,ToolStrip的MouseEnter
事件会触发,但鼠标离开时MouseLeave
并不总是会触发。我想这可能是因为鼠标已经从一个孩子内部变成了控制之外,没有通过控制本身。
如何可靠地检测鼠标何时离开控件?
答案 0 :(得分:0)
仅当控件拥有鼠标捕获时,才会触发MouseLeave。
答案 1 :(得分:0)
使用Global Hook怎么样:http://www.codeproject.com/KB/cs/globalhook.aspx
因此,您将能够自己管理正确的结果。
答案 2 :(得分:0)
我会远离全球性的钩子。
引用来自:MSDN
注意您应该使用全局钩子 仅用于调试目的; 否则,你应该避免它们。 全局挂钩会损害系统性能 并导致与他人发生冲突 实现相同的应用程序 全局钩子的类型。
一旦您的申请失去了重点,事件就更难以处理。重新评估您的业务规则。
也许您需要做的是在失去焦点时禁用您的应用程序。这将强制用户在使用工具条之前单击或选项卡到您的应用程序。此时,您可以捕获Control.GotFocus事件并执行您想要的任何逻辑。