如何从标签控件中删除虚线焦点矩形?

时间:2015-07-18 00:15:28

标签: c# .net winforms focus tabcontrol

我尝试从自定义"0x" + str中移除虚线焦点矩形。我已尝试过所有内容,但我无法移除该矩形。

Tab Control Dialog

如图所示,焦点矩形在我的应用程序设计中令人不安。

请帮忙!

1 个答案:

答案 0 :(得分:3)

要删除焦点提示,您必须将UserPaint设置为true,然后自己绘制整个标签控件,包括边框,文本,背景,突出显示,热跟踪等。

以下代码仅绘制标签文本和背景:

public class TC2 : TabControl {
    public TC2() {
        this.SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.OptimizedDoubleBuffer | ControlStyles.ResizeRedraw | ControlStyles.UserPaint, true);
    }

    protected override void OnPaint(PaintEventArgs e) {
        base.OnPaint(e);
        var g = e.Graphics;

        TabPage currentTab = this.SelectedTab;
        for (int i = 0; i < TabPages.Count; i++) {
            TabPage tp = TabPages[i];
            Rectangle r = GetTabRect(i);
            Brush b = (tp == currentTab ? Brushes.LightSteelBlue : Brushes.LightGray);
            g.FillRectangle(b, r);
            TextRenderer.DrawText(g, tp.Text, tp.Font, r, tp.ForeColor);
        }
    }

    protected override void OnPaintBackground(PaintEventArgs e) {
        base.OnPaintBackground(e);
    }
}