2010-03-19 55 views

回答

2

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. 
3

一個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; 
} 
+0

不,這是不能繼承。它由活動主題控制。 – 2010-03-19 12:53:40

+2

我不知道你是否爭論是否存在實際的繼承關係...我所知道的是,TabControl將其背景與其父項相同,而不考慮活動主題。 – jamesrom 2010-03-19 13:24:14

相關問題