当我使用MouseLeave
事件执行操作时,如果用户离开Control
足够快,它实际上会跳过MouseLeave
事件..
用户将不在control
内,并且未调用MouseLeave
事件。现在,我不知道是否有办法解决这个问题,或者是否有更好的事件要使用。我基本上有一个UserControl
,其中包含Combobox
。当另一个滚动UserControl
时,ComboBox
会出现(每次都有效),但当用户离开Control
去另一个时,它可能会也可能不会生成ComboBox `.Visible = false。它似乎取决于光标移动的速率。
任何想法的人?
答案 0 :(得分:1)
前一段时间它发生在我身上!我不得不使用PInvoke挂钩鼠标事件,并自己完成所有逻辑。
以下文章包含有关如何挂钩鼠标事件的详细信息。
http://www.codeproject.com/KB/cs/globalhook.aspx
在您设法挂钩事件之后,您需要执行计算控件绝对位置的逻辑,并判断鼠标指针是在入还是出。然后你需要跟踪进/出的变化,这就是全部。
很长的路要走...我会说这是一种矫枉过正的行为。但是如果你真的需要它,无论如何。
答案 1 :(得分:0)
离开控件时将调用鼠标离开事件。我想你错过了注册它。
private void comboBox1_Leave(object sender, EventArgs e)
{
}
您可以使用comboboxleave事件,这将在您离开此控件时调用,那就是您希望我认为:) 不要忘记先注册活动
答案 2 :(得分:0)
我想象一下捕获鼠标时会发生这种情况:WM_MOUSELEAVE not being generated when left mouse button is held