2011-04-22 83 views
3

看來,當我使用MouseLeave事件執行的操作,如果用戶離開Control足夠快,它實際上將跳過MouseLeave事件..問題與控制鼠標離開事件

用戶將出沒有調用controlMouseLeave事件。現在,我不知道是否有辦法解決這個問題,或者是否有更好的事件來使用。我基本上有一個UserControl其中有Combobox。當另一個滾動到UserControl時,ComboBox出現(每次都有效),但是,當用戶離開Control轉到另一個時,它可能會或可能不會使ComboBox.Visible = false。這似乎取決於光標移動的速率。

任何想法的傢伙?

+0

你註冊了事件處理程序嗎? – Oded 2011-04-22 20:05:44

+0

@Oded是的,慢慢移出控制時,事件會發生。 – 2011-04-22 21:41:04

回答

1

前一段時間它發生在我身上!我必須使用PInvoke來掛接鼠標事件,並且自己完成所有的邏輯。

以下文章包含有關如何掛鉤鼠標事件的詳細信息。

http://www.codeproject.com/KB/cs/globalhook.aspx

後您管理掛鉤的事件,你需要做的計算控件的絕對位置的邏輯,並告訴鼠標指針是否或縮小。然後你需要跟蹤進/出變化,這是全部。

很長的路要走...我會說這是一個矯枉過正的問題。但是,如果你真的需要它,無論如何。

0

鼠標離開事件將在您離開控件時調用。我想你錯過了註冊它。

private void comboBox1_Leave(object sender, EventArgs e) 
     { 

     } 

當你離開這個控制可以使用comboboxleave事件,這將調用,這是你期望我想:) 不要忘記註冊事件第一

+0

private void comboBox1_Leave(object sender,EventArgs e) { } – TechGiant 2011-04-22 20:13:23

+0

這是否解決了您的問題? – TechGiant 2011-04-22 20:23:06