我可以在TabControl上的标签上删除虚线焦点矩形吗?

时间:2011-03-07 06:59:29

标签: c# .net winforms focus tabcontrol

我有一个标签控件,需要删除所选标签周围的虚线焦点矩形。

我已将TabControl的TabStop属性设置为false。但是,如果我单击选项卡并按Tab键,则会在标签名称周围显示虚线矩形。

我尝试创建自己的TabControl并尝试了这个

class MyTabControl : TabControl
{
        public MyTabControl()
        {
            TabStop = false;
            DrawMode = TabDrawMode.OwnerDrawFixed;
            DrawItem += new DrawItemEventHandler(DoMoreTabControl_DrawItem);
            Invalidate();
        }
}

但是,仍然会出现虚线矩形。

我也尝试覆盖MyTabControl.OnPaint()方法,但它没有帮助。

有没有办法实现这个目标?

2 个答案:

答案 0 :(得分:3)

将焦点设置为标签而不是标题(如此)

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

这些改变对我有用! 希望它对某人有帮助。

答案 1 :(得分:2)

是的,DrawItem事件。你没有发布它,不可能猜出它有什么问题。只需确保在复制MSDN示例代码时不要调用e.DrawFocusRectangle()。简单地删除该陈述就足够了。考虑使用不同的背景颜色或文本字体样式作为替代,因此焦点提示不会完全丢失。