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

3 c# tabcontrol colors winforms

我的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));
    }
}
Run Code Online (Sandbox Code Playgroud)

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

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

var*_*bas 5

tabControl1_DrawItem_1方法提供您想要的; 您的代码的问题是您没有将它附加到DrawItem Event.只需更换:

tabControl1.DrawItem += new DrawItemEventHandler(tabControl1_DrawItem);
Run Code Online (Sandbox Code Playgroud)

附:

tabControl1.DrawItem += new DrawItemEventHandler(tabControl1_DrawItem_1);
Run Code Online (Sandbox Code Playgroud)

澄清:

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));
    }
}
Run Code Online (Sandbox Code Playgroud)