我正在尝试以这样一种方式实现我的标签控件,即用户无需在选择标签页之前单击标签页头。我想要做的是在用户将标签页标题悬停时立即选择标签页。
我目前正在使用此mousemove事件
foreach (TabPage page in tabControl1.TabPages)
{
if (e.Location.Y == page.Bounds.Top - 15)
{
tabControl1.SelectedTab = page;
}
}
当我将标签页标题悬停在所选位置时,我得到一种奇怪的行为。所有标签页都逐一被选中。 (即它不断选择所有标签页而不是悬停的标签页)
我做错了什么,我能做些什么来实现我想要的?
答案 0 :(得分:3)
您还需要检查e.Location.X
。现在你只是在寻找y值,并且因为每个标签页头都在相同的“高度”,所以所有标签页的if语句都是真的。
编辑:改为使用函数GetTabRect(i)
:
for (int tab = 0; tab < tabControl1.TabCount; tab++) {
if (tabControl1.GetTabRect(tab).Contains(e.Location)) {
tabControl1.SelectedIndex = tab;
break;
}
}