Tabcontrol Farbe ändern!

  • VB.NET
  • .NET 2.0

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Tabcontrol Farbe ändern!

    Moin! :)
    Ich möchte gerne die Farbe von einen Tabcontrol Register ändern!
    Habe bereits vieles ausprobiert.
    Ich habe einen Code, der aber alle Register Färbt, aber ich möchte ein bestimmtes auswählen.
    Zum Beispiel Register Nr. 1 soll Rot erscheinen.
    Ich hoffe das ich das Problem gut beschreiben habe.
    Freue mich auf eure Hilfe!
    BIG THX


    VB.NET-Quellcode

    1. Private Sub TabControl1_DrawItem(ByVal sender As Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles TabControl1.DrawItem
    2. Dim g As Graphics = e.Graphics
    3. Dim tp As TabPage = TabControl1.TabPages(e.Index)
    4. Dim br As Brush
    5. Dim sf As New StringFormat
    6. Dim r As New RectangleF(e.Bounds.X, e.Bounds.Y + 2, e.Bounds.Width, e.Bounds.Height - 2)
    7. sf.Alignment = StringAlignment.Center
    8. Dim strTitle As String = tp.Text
    9. 'If the current index is the Selected Index, change the color
    10. If TabControl1.SelectedIndex = e.Index Then
    11. 'this is the background color of the tabpage header
    12. br = New SolidBrush(Color.LightSteelBlue) ' chnge to your choice
    13. g.FillRectangle(br, e.Bounds)
    14. 'this is the foreground color of the text in the tab header
    15. br = New SolidBrush(Color.Black) ' change to your choice
    16. g.DrawString(strTitle, TabControl1.Font, br, r, sf)
    17. Else
    18. 'these are the colors for the unselected tab pages
    19. br = New SolidBrush(Color.LightBlue) ' Change this to your preference
    20. g.FillRectangle(br, e.Bounds)
    21. br = New SolidBrush(Color.Black)
    22. g.DrawString(strTitle, TabControl1.Font, br, r, sf)
    23. End If
    24. End Sub
    Visual Basic.NET 8o
    MS-SQL
    8o
    Bitte nochmal anders formulieren, denn ich verstehe: Du willst z.B. den Kopf von TabPage 1 rot machen und den Rest z.B. Grün. Dann werte doch in Zeile#14 es auch so aus: If e.Index = 0 Then
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Häufig von mir verwendete Abkürzungen: CEs = control elements (Labels, Buttons, DGVs, ...) und tDS (typisiertes DataSet)
    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht in den Spekulatiusmodus gehen.
    Wenn nicht einfach im "Else" Bereich den Index abfragen, und dann einzeln die TabPage-Reiter Farbe verändern.
    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


    Da die ganzen Variablennamen ausbaufähig sind und nicht Dispose genutzt wurde, obwohl nötig, hier mal wie es sauberer wäre:

    VB.NET-Quellcode

    1. Private Sub TabControl1_DrawItem(ByVal sender As Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles TabControl1.DrawItem
    2. Dim ColorToUse = If(e.Index = 0, Color.Red, Color.LightSteelBlue)
    3. Using br As New SolidBrush(ColorToUse)
    4. e.Graphics.FillRectangle(br, e.Bounds)
    5. End Using
    6. Using BlackBrush As New SolidBrush(Color.Black)
    7. Using sf As New StringFormat()
    8. sf.Alignment = StringAlignment.Center
    9. e.Graphics.DrawString(TabControl1.TabPages(e.Index).Text, TabControl1.Font, BlackBrush, New RectangleF(e.Bounds.X, e.Bounds.Y + 2, e.Bounds.Width, e.Bounds.Height - 2), sf)
    10. End Using
    11. End Using
    12. End Sub

    Spoiler anzeigen

    oder nach IOSP

    VB.NET-Quellcode

    1. Private Sub TabControl1_DrawItem(ByVal sender As Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles TabControl1.DrawItem
    2. DrawTabHeaderBackgroundWith(e)
    3. DrawTabHeaderTextWith(e)
    4. End Sub
    5. Private Sub DrawTabHeaderBackgroundWith(e As DrawItemEventArgs)
    6. Dim ColorToUse = If(e.Index = 0, Color.Red, Color.LightSteelBlue)
    7. Using br As New SolidBrush(ColorToUse)
    8. e.Graphics.FillRectangle(br, e.Bounds)
    9. End Using
    10. End Sub
    11. Private Sub DrawTabHeaderTextWith(e As DrawItemEventArgs)
    12. Using BlackBrush As New SolidBrush(Color.Black)
    13. Using sf As New StringFormat()
    14. sf.Alignment = StringAlignment.Center
    15. e.Graphics.DrawString(TabControl1.TabPages(e.Index).Text, TabControl1.Font, BlackBrush, New RectangleF(e.Bounds.X, e.Bounds.Y + 2, e.Bounds.Width, e.Bounds.Height - 2), sf)
    16. End Using
    17. End Using
    18. End Sub


    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Häufig von mir verwendete Abkürzungen: CEs = control elements (Labels, Buttons, DGVs, ...) und tDS (typisiertes DataSet)
    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht in den Spekulatiusmodus gehen.

    VaporiZed schrieb:

    VB.NET-Quellcode

    1. Using BlackBrush As New SolidBrush(Color.Black)
    Hier genügt ein Brushes.Black, dann ohne Using.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    VB-Fragen über PN / Konversation werden ignoriert!