【问题标题】:How to remove dotted focus rectangle from tab control? [closed]如何从选项卡控件中删除虚线焦点矩形? [关闭]
【发布时间】:2015-07-18 00:15:27
【问题描述】:

我正在尝试从我的自定义 Tab Control 中删除虚线焦点矩形。我已经尝试了所有方法,但无法删除该矩形。

正如您在图片中看到的,焦点矩形在我的应用程序设计中令人不安。

请帮忙!

【问题讨论】:

  • 是的,它对我不起作用。
  • 焦点矩形在运行时显示,而不仅仅是在设计时?
  • 给我们看绘图代码!
  • 给我们看绘图代码! ! ! !

标签: c# .net winforms focus tabcontrol


【解决方案1】:

要移除焦点提示,你必须将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);
    }
}

【讨论】:

  • 我的自定义选项卡控件已经这样做了。即使使用自定义绘制仍然会出现焦点矩形。我不知道该怎么办:(
  • DrawMode = TabDrawMode.OwnerDrawFixed 不等于 SetStyle(UserPaint)。此时,你必须提供一些代码,否则就是猜测。
  • @Loathing +1。我需要这个。
猜你喜欢
  • 1970-01-01
  • 2010-10-17
  • 1970-01-01
  • 2019-12-21
  • 1970-01-01
  • 1970-01-01
  • 2020-10-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多