如何获取标签页头位置

本文关键字:标签 位置 获取 何获取 | 更新日期: 2023-09-27 18:33:20

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

我当前正在使用此鼠标移动事件

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

当我将标签页标题悬停在所选位置时,我会出现奇怪的行为。所有标签页都被逐个选择。(即它不断选择所有标签页而不是悬停的标签页)

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

如何获取标签页头位置

还需要检查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;
    }
}