WinForm 鼠標進入移開窗體事件,因子控件導致的誤觸發


 1 /// <summary>  
 2         /// 重寫OnControlAdded方法,為每個子控件添加MouseLeave事件  
 3         /// </summary>  
 4         /// <param name="e"></param>  
 5         protected override void OnControlAdded(ControlEventArgs e)
 6         {
 7             Control control = e.Control; // 獲取添加的子控件  
 8             control.MouseLeave += this.SubControlLeave; // 當鼠標離開該子控件時判斷是否是離開SelfDefinePanel  
 9             base.OnControlAdded(e);
10         }
11 
12         /// <summary>  
13         /// 重寫OnMouseLeave事件,如果是離開本身的矩形區域則發生 base.OnMouseLeave(e);  
14         /// </summary>  
15         /// <param name="e"></param>  
16         protected override void OnMouseLeave(EventArgs e)
17         {
18             //判斷鼠標是否還在本控件的矩形區域內  
19             if (!this.RectangleToScreen(this.ClientRectangle).Contains(Control.MousePosition)) // this.RectangleToScreen(this.ClientRectangle) 映射為屏幕的矩形  
20             {
21                 base.OnMouseLeave(e);
22             }
23         }

 

 

復制以上代碼在需要的窗體中即可。這樣,如果鼠標進入到窗體中的子控件,導致也觸發了窗體的Leavel移開事件的問題就解決了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM