一尘不染

设置TabPage标头颜色

c#

问候,

我有一个选项卡控件,我想让一个选项卡在事件中更改其文本颜色。我发现了诸如C#-TabPage
Color事件

C#Winform之类的答案:如何设置TabControl(不是Tabpage)的基础颜色,
但是使用这些设置所有颜色而不是一种颜色。

因此,我希望有一种方法可以通过我希望将其更改为方法而非事件的选项卡来实现?

就像是:

public void SetTabPageHeaderColor(TabPage page, Color color) 
{
    //Text Here
}

阅读 1078

收藏
2020-05-19

共1个答案

一尘不染

如果要给选项卡上色,请尝试以下代码:

this.tabControl1.DrawMode = TabDrawMode.OwnerDrawFixed;
this.tabControl1.DrawItem += new System.Windows.Forms.DrawItemEventHandler(this.tabControl1_DrawItem);

private Dictionary<TabPage, Color> TabColors = new Dictionary<TabPage, Color>();
private void SetTabHeader(TabPage page, Color color)
{
    TabColors[page] = color;
    tabControl1.Invalidate();
}
private void tabControl1_DrawItem(object sender, DrawItemEventArgs e)
{
    //e.DrawBackground();
    using (Brush br = new SolidBrush (TabColors[tabControl1.TabPages[e.Index]]))
    {
        e.Graphics.FillRectangle(br, e.Bounds);
        SizeF sz = e.Graphics.MeasureString(tabControl1.TabPages[e.Index].Text, e.Font);
        e.Graphics.DrawString(tabControl1.TabPages[e.Index].Text, e.Font, Brushes.Black, e.Bounds.Left + (e.Bounds.Width - sz.Width) / 2, e.Bounds.Top + (e.Bounds.Height - sz.Height) / 2 + 1);

        Rectangle rect = e.Bounds;
        rect.Offset(0, 1);
        rect.Inflate(0, -1);
        e.Graphics.DrawRectangle(Pens.DarkGray, rect);
        e.DrawFocusRectangle();
    }
}
2020-05-19