我有:
- 文本框(多行)
- 控制板
- 面板内的不同控件(按钮、文本框)
设想:
当我的鼠标在我的面板范围内或面板区域内时,我需要向文本框添加文本,并且当不在面板中聚焦时再次清除文本框。我使用MouseHover
和MouseLeave
事件来实现这个效果。问题是当我专注于面板内的任何控件时,鼠标似乎失去了面板中的焦点并调用MouseLeave
事件。
当鼠标在面板范围内时,有没有办法添加事件?
您可以使用MouseLeave
面板的 并检查您的鼠标位置是否真的不在面板表面。
private void panel_MouseLeave( object sender, EventArgs e ) {
Point mouseposition = this.PointToClient( MousePosition ); // to calculate the mouseposition related to the form (keyword this)
//If the mouse isn't into the panel surface...
if (!(mouseposition.X > panel1.Location.X && mouseposition.Y > panel1.Location.Y && mouseposition.X < panel.Location.X + panel1.ClientSize.Width && mouseposition.Y < panel1.Location.Y + panel.ClientSize.Height) )
textbox.Clear();
}