如何从选项卡控件中删除虚线焦点矩形?
How to remove dotted focus rectangle from tab control?
我正在尝试从我的自定义 Tab Control
中删除虚线焦点矩形。我已经尝试了所有方法,但无法删除那个矩形。
正如您在图片中看到的,焦点矩形在我的应用程序设计中令人不安。
请帮忙!
要移除焦点提示,您必须将 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);
}
}
我正在尝试从我的自定义 Tab Control
中删除虚线焦点矩形。我已经尝试了所有方法,但无法删除那个矩形。
正如您在图片中看到的,焦点矩形在我的应用程序设计中令人不安。
请帮忙!
要移除焦点提示,您必须将 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);
}
}