如何在C#Winform的TabPage的Tab区域检查Mouse Out?

时间:2015-12-14 19:36:36

标签: c# winforms mouseevent tabcontrol

我想检查C#Winform中TabPage选项卡区域的鼠标输入/输出。

有事件MouseLeave,MouseEnter,MouseMove,但有适用于整个TabPage。我只想要Tab。

TabControl tabControl = new TabControl();
TabPage tabpage = new TabPage();
tabpage.MouseMove += new System.Windows.Forms.MouseEventHandler(panel1_MouseMove);
tabControl.Controls.Add(tabpage);
this.Controls.Add(tabControl);

我在想,如果我知道Tab区域,以便我可以在MouseMove事件中编写代码,那么有没有更好的方法来做同样的事情。

我想要附图中箭头指向的区域。

Tab

2 个答案:

答案 0 :(得分:2)

GetTabRect功能可以帮助您:

TabPage mouseTab = null;

void tabControl1_MouseMove(object sender, MouseEventArgs e) {
  TabPage checkTab = null;

  for (int i = 0; i < tabControl1.TabPages.Count; ++i) {
    if (tabControl1.GetTabRect(i).Contains(e.Location)) {
      checkTab = tabControl1.TabPages[i];
      break; // To avoid unnecessary loop
    }
  }

  if (checkTab == null && mouseTab != null) {
    mouseTab = null;
  } else if (checkTab != null) {
    if (mouseTab == null || !checkTab.Equals(mouseTab)) {
      mouseTab = checkTab;
      // or do something here...
    }
  }
}

要处理鼠标离开标题标题区域:

void tabControl1_MouseLeave(object sender, EventArgs e) {
  if (mouseTab != null) {
    // do something here with mouseTab...

    mouseTab = null;
  }
}

答案 1 :(得分:0)

您可以在Tab的整个区域放置一个Panel控件,然后使用您为该Panel控件提到的事件。