從本質上講,你要檢查如果光標在控制的範圍內。解決方案如下:
(1)在與您的Form
大小相同的表單中添加Panel
,並將表單中的所有控件移動到面板。很容易更改:打開MyForm.designer.cs
,添加面板,並將所有語句(如this.Controls.Add(myLabel);
)更改爲this.myPanel.Controls.Add(myLabel);
。
(2)處理您添加的面板的MouseEnter
和MouseLeave
事件。
myPanel.MouseEnter += (sender, e) =>
{
//enter
};
myPanel.MouseLeave += (sender, e) =>
{
if (Cursor.Position.X < myPanel.Location.X
|| Cursor.Position.Y < myPanel.Location.Y
|| Cursor.Position.X > myPanel.Location.X + myPanel.Width
|| Cursor.Position.Y > myPanel.Location.Y + myPanel.Height)
{
//out of scope
}
};
(3)爲什麼不在步驟2中使用Form
?爲什麼我們需要一個尺寸相同的Panel
?親自嘗試一下。表單的邊框會讓你發瘋。
(4)可以使在步驟2中的擴展方法,該方法是有幫助的furthur用法if
語句。
的可能重複【如何當鼠標離開的形式檢測?](http://stackoverflow.com/questions/279472/how-to-detect-when-the-mouse-leaves-the-form) – 2010-11-13 08:39:01