2010-03-19 5 views

Antwort

2

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

Vergewissern Sie den ersten Kommentar zu lesen, da es eine Korrektur enthält, die den Code Kompilierung lassen wird.

Borrowed (und korrigiert) Code-Alarm:

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(); 
    } 
} 

Um dies in Ihrem Code zu verwenden, um dieses Spiel setzen in Ihrer Form Load-Ereignis:

tabControl1.DrawItem += ChangeTabColor. 
3

Die Hintergrundfarbe eines TabControl vererbt wird von seinem Elternteil.

Platzieren Sie ein Panel auf dem Formular mit der gleichen Position und Größe wie das TabControl, setzen Sie Ihre TabControl in dieses Panel und setzen Sie das Dock auf "Fill".

Oder die gleiche Methode in Code:

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

Nein, ist es nicht vererbt. Es wird vom aktiven Thema gesteuert. –

+2

Ich weiß nicht, ob Sie streiten, ob eine tatsächliche Vererbungsbeziehung existiert oder nicht ... Alles, was ich weiß, ist, dass das TabControl seinen Hintergrund genauso wie sein Elternteil einfärbt, ungeachtet des aktiven Themas. – jamesrom

Verwandte Themen