我能否在TabControl上移除标签页上的虚线焦点框?

10
我有一个选项卡控件,需要去除选中选项卡周围的虚线焦点矩形。
我将TabControl的TabStop属性设置为false。但是如果我单击选项卡并按下“Tab”键,则选项卡名称周围会出现虚线矩形。
我尝试创建自己的TabControl并尝试了以下操作:
class MyTabControl : TabControl
{
        public MyTabControl()
        {
            TabStop = false;
            DrawMode = TabDrawMode.OwnerDrawFixed;
            DrawItem += new DrawItemEventHandler(DoMoreTabControl_DrawItem);
            Invalidate();
        }
}

然而,虚线矩形仍然出现。
我也尝试覆盖 MyTabControl.OnPaint() 方法,但这并没有帮助。
有没有办法实现这个功能?

你为什么想要隐藏它?有什么强烈的理由吗? - Pradeep
2个回答

4
将焦点设置为选项卡而不是标题(如此)
private void tabControl1_Click(object sender, EventArgs e)
{
    (sender as TabControl).SelectedTab.Focus();
}

当上述事件被执行时,您会看到一个虚线矩形出现一毫秒,然后立即消失。

此外,要在默认选择的选项卡加载时删除虚线矩形

private void tabControl1_Enter(object sender, EventArgs e)
{
    (sender as TabControl).SelectedTab.Focus();
}

这两个更改对我都有效!希望能帮助到别人。


2

是的,DrawItem事件。如果没有发表它,那么就很难猜出问题所在。只要确保不要调用e.DrawFocusRectangle()即可。当你复制MSDN示例代码时可能会出现这种情况。直接删除该语句就足够了。考虑使用不同的背景颜色或文本字体样式作为替代方案,以便焦点提示不会完全丢失。


4
一个很好的实现此功能的应用程序例子是:Visual Studio和Microsoft SQL Server Management Studio,以及网页浏览器。标签页上没有焦点矩形。使用Ctrl+Tab似乎是从键盘导航标签页的常规方法。 - Chris Weber

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接