簡體   English   中英

如何在C#中更改tabcontainer標簽欄的背景顏色?

[英]how can i change the background color of tabcontainer tab bar in c#?

我沒有找到選項卡容器的任何屬性來更改包含選項卡的欄的背景顏色,我該怎么做?

TabControl的背景色是從其父級繼承的。

將一個面板放置在窗體上,其位置和大小與TabControl相同,將TabControl放在此面板中,然后將Dock設置為“填充”。

或代碼中的相同方法:

private void Form1_Load(object sender, EventArgs e)
{
    Panel tabBackground = new Panel
    {
        Location = tabControl1.Location,
        Size = tabControl1.Size,
        // Your color here
        BackColor = Color.Magenta
    };
    tabBackground.Controls.Add(tabControl1);
    Controls.Add(tabBackground);
    tabControl1.Dock = DockStyle.Fill;
}

http://rajeshkm.blogspot.com/2006/07/how-to-change-color-of-tab-control-in.html

確保您閱讀了第一個注釋,因為它包含一個可以使代碼編譯的更正。

借用(並更正)的代碼警報:

private void ChangeTabColor(object sender, DrawItemEventArgs e)
{
    Font TabFont;
    Brush BackBrush = new SolidBrush(Color.Green); //Set background color
    Brush ForeBrush = new SolidBrush(Color.Yellow);//Set foreground color
    if (e.Index == this.tabControl1.SelectedIndex)
    {
        TabFont = new Font(e.Font, FontStyle.Italic | FontStyle.Bold);
    }
    else
    {
        TabFont = e.Font;
    }
    string TabName = this.tabControl1.TabPages[e.Index].Text;
    StringFormat sf = new StringFormat();
    sf.Alignment = StringAlignment.Center;
    e.Graphics.FillRectangle(BackBrush, e.Bounds);
    Rectangle r = e.Bounds;
    r = new Rectangle(r.X, r.Y + 3, r.Width, r.Height - 3);
    e.Graphics.DrawString(TabName, TabFont, ForeBrush, r, sf);
    //Dispose objects
    sf.Dispose();
    if (e.Index == this.tabControl1.SelectedIndex)
    {
        TabFont.Dispose();
        BackBrush.Dispose();
    }
    else
    {
        BackBrush.Dispose();
        ForeBrush.Dispose();
    }
}

要在您的代碼中使用此代碼,請將此行放入表單的load事件中:

tabControl1.DrawItem += ChangeTabColor.

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM