如何在C#窗体中的TabPage的选项卡区域中检出鼠标

本文关键字:区域 鼠标 选项 TabPage 窗体 | 更新日期: 2023-09-27 18:26:49

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

有Event 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事件中为其编写代码,还有更好的方法吗。

我想要附加图像中箭头所指的区域。

选项卡

如何在C#窗体中的TabPage的选项卡区域中检出鼠标

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;
  }
}

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