鼠标在面板范围内聚焦时添加事件

时间:2012-06-19 17:24:47

标签: c# .net winforms panel

我有:

  • 文本框(多线)
  • 面板
  • 面板内的不同控件(按钮,文本框)

情景:

当我的鼠标位于我的面板范围内或面板区域内时,我需要在文本框中添加文本,并在未在面板中聚焦时再次清除文本框。 我使用MouseHoverMouseLeave事件来表示此效果。问题是当我专注于面板内的任何控件时,鼠标似乎在面板中失去焦点并调用MouseLeave事件。

当鼠标在面板范围内时,有没有办法添加事件?

1 个答案:

答案 0 :(得分:4)

您可以使用面板的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();
 }