更改活动标签页上的字体颜色

时间:2013-12-01 12:01:16

标签: c# winforms colors tabcontrol

我的TabControl有问题。我有各种标签设置为垂直模式,它们有点调整。这是一张它的样子:

tabcontrol

我想知道如何将红色变为浅蓝色,并且可能会将灰色背景更改为更轻一些。 我试图跟随另一个人通过谷歌找到的关于如何将字体更改为粗体的建议并尝试了这个:

InitializeComponent();
tabControl1.DrawMode = TabDrawMode.OwnerDrawFixed;
tabControl1.DrawItem += new DrawItemEventHandler(tabControl1_DrawItem);

private void tabControl1_DrawItem_1(object sender, DrawItemEventArgs e)
{
    if (e.Index == tabControl1.SelectedIndex)
    {
        e.Graphics.DrawString(tabControl1.TabPages[e.Index].Text,
            new Font(tabControl1.Font, FontStyle.Bold),
            Brushes.Aqua,
            new PointF(e.Bounds.X + 3, e.Bounds.Y + 3));
    }
    else
    {
        e.Graphics.DrawString(tabControl1.TabPages[e.Index].Text,
            tabControl1.Font,
            Brushes.Aqua,
            new PointF(e.Bounds.X + 3, e.Bounds.Y + 3));
    }
}

那根本不起作用。颜色或字体也不是粗体或浅绿色。 任何人有任何想法如何改变它? 出于某种原因,我在将DrawMode属性更改为OwnerDrawFixed后无法更改颜色 - 我需要能够使用这些垂直对齐的标签。

编辑:我不想更改实际标签页中的字体/颜色,只需更改左侧的标签。

2 个答案:

答案 0 :(得分:5)

tabControl1_DrawItem_1方法提供您想要的内容;您的代码存在的问题是您没有将其附加到DrawItem Event。只需替换:

tabControl1.DrawItem += new DrawItemEventHandler(tabControl1_DrawItem);

使用:

tabControl1.DrawItem += new DrawItemEventHandler(tabControl1_DrawItem_1);

澄清:

tabControl1_DrawItem_1为所有标签指定相同的颜色(选择与否)。如果要为选定/未选定的选项卡获取不同的颜色,则必须在else部分中更改此选项。样品:

private void tabControl1_DrawItem_1(object sender, DrawItemEventArgs e)
{
    if (e.Index == tabControl1.SelectedIndex)
    {
        e.Graphics.DrawString(tabControl1.TabPages[e.Index].Text,
            new Font(tabControl1.Font, FontStyle.Bold),
            Brushes.Aqua,
            new PointF(e.Bounds.X + 3, e.Bounds.Y + 3));
    }
    else
    {
        e.Graphics.DrawString(tabControl1.TabPages[e.Index].Text,
            tabControl1.Font,
            Brushes.Black,
            new PointF(e.Bounds.X + 3, e.Bounds.Y + 3));
    }
}

答案 1 :(得分:0)

如果您的事件没有触发更改选项卡控件绘制模式为TabDrawMode.OwnerDrawFixed。此外,我建议将选项卡控件的外观更改为其中一个按钮类型。它避免了边框线涂料的问题

完整代码为

public YourClassConstructor()
{
    this.tcRemontas.DrawMode = TabDrawMode.OwnerDrawFixed;
    this.tcRemontas.Appearance = TabAppearance.FlatButtons;
    tcRemontas.DrawItem += TcRemontas_DrawItem;
}

private void TcRemontas_DrawItem(object sender, DrawItemEventArgs e)
{
    TabControl tabControl = sender as TabControl;

    if (e.Index == tabControl.SelectedIndex)
    {
        e.Graphics.DrawString(tabControl.TabPages[e.Index].Text,
            new Font(tabControl.Font, FontStyle.Bold),
            Brushes.Black,
            new PointF(e.Bounds.X + 3, e.Bounds.Y + 3));
    }
    else
    {
        e.Graphics.DrawString(tabControl.TabPages[e.Index].Text,
            tabControl.Font,
            Brushes.Black,
            new PointF(e.Bounds.X + 3, e.Bounds.Y + 3));
    }
}