0

我正在尝试以这样一种方式实现我的选项卡控件,即用户不需要在选择选项卡页之前单击选项卡页头。我想要做的是在用户悬停标签页标题后立即选择标签页。

我目前正在使用这个 mousemove 事件

foreach (TabPage page in tabControl1.TabPages)
{
    if (e.Location.Y == page.Bounds.Top - 15)
    {
        tabControl1.SelectedTab = page;
    }
}

当我将标签页标题悬停在所选位置时,我得到了一个奇怪的行为。所有标签页都被一一选择。(即它一直选择所有标签页而不是悬停的标签页)

我做错了什么,我能做些什么来实现我想要的?

4

1 回答 1

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;
    }
}
于 2013-09-30T23:43:30.910 回答