【问题标题】:How to check Mouse Out on a Tab area of TabPage in C# Winform?如何在 C# Winform 中的 TabPage 的选项卡区域上检查鼠标移出?
【发布时间】:2015-12-14 19:36:36
【问题描述】:

我想在 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

【问题讨论】:

标签: c# winforms mouseevent tabcontrol


【解决方案1】:

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

【讨论】:

  • 鼠标离开选项卡时无法正常工作。
  • @vivekjain 更新了示例。
  • 有什么办法可以查出,鼠标离开事件中的哪个tab鼠标?
  • @vivekjain 是的,它应该是 mouseTab,只要它不为空。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-12
    • 2015-08-16
    • 2020-06-11
    • 1970-01-01
    • 1970-01-01
    • 2018-04-11
    • 1970-01-01
    相关资源
    最近更新 更多