繁体   English   中英

如何在C#Winform中的TabPage的选项卡区域检查鼠标移出?

[英]How to check Mouse Out on a Tab area of TabPage in C# Winform?

我想检查C#Winform中TabPage的Tab区域上的Mouse In / Out。

有事件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事件中编写相同的代码,是否有更好的方法来执行此操作?

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

标签

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

您可以在“选项卡”的整个区域上放置一个面板控件,然后将您提到的事件用于该面板控件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM