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

Kar*_*hik 9 .net c# tabcontrol focus winforms

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

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

我试过创建自己的TabControl并试过这个

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

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

我也尝试重写该MyTabControl.OnPaint()方法,但它没有帮助.

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

JD-*_*D-V 5

将焦点设置为选项卡而不是标题(像这样)

private void tabControl1_Click(object sender, EventArgs e)
{
    (sender as TabControl).SelectedTab.Focus();
}
Run Code Online (Sandbox Code Playgroud)

您将看到一毫秒的虚线矩形,一旦执行上述事件,它就会消失。

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

private void tabControl1_Enter(object sender, EventArgs e)
{
    (sender as TabControl).SelectedTab.Focus();
}
Run Code Online (Sandbox Code Playgroud)

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


Han*_*ant 2

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

  • 执行此操作的应用程序的一个很好的示例:Visual Studio 和 Microsoft SQL Server Management Studio。还有网络浏览器。选项卡上没有焦点矩形。Ctrl+tab 似乎是从键盘导航选项卡的可接受方式。 (4认同)