4 Stimmen

Wie kann ich die Hintergrundfarbe der Tabcontainer-Registerkartenleiste in c# ändern?

Ich habe keine Eigenschaft eines Registerkarten-Containers gefunden, um die Hintergrundfarbe der Leiste zu ändern, die die Registerkarten enthält, wie kann ich das tun?

3voto

jamesrom Punkte 856

Die Hintergrundfarbe eines TabControls wird von seinem Elternteil geerbt.

Platzieren Sie einen Bereich auf dem Formular, der die gleiche Position und Größe wie das TabControl hat, setzen Sie Ihr TabControl in diesen Bereich und stellen Sie Dock auf 'Füllen'.

Oder die gleiche Methode im 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;
}

2voto

MusiGenesis Punkte 72729

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

Lesen Sie unbedingt den ersten Kommentar, da er eine Korrektur enthält, die den Code kompilierbar macht.

Alarm für entliehenen (und korrigierten) Code:

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, fügen Sie diese Zeile in das Ladeereignis Ihres Formulars ein:

tabControl1.DrawItem += ChangeTabColor.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X