Control MouseLeave事件的问题

时间:2011-04-22 20:01:55

标签: c# events user-controls

当我使用MouseLeave事件执行操作时,如果用户离开Control足够快,它实际上会跳过MouseLeave事件..

用户将不在control内,并且未调用MouseLeave事件。现在,我不知道是否有办法解决这个问题,或者是否有更好的事件要使用。我基本上有一个UserControl,其中包含Combobox。当另一个滚动UserControl时,ComboBox会出现(每次都有效),但当用户离开Control去另一个时,它可能会也可能不会生成ComboBox `.Visible = false。它似乎取决于光标移动的速率。

任何想法的人?

3 个答案:

答案 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