vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#

https://www.vbarchiv.net
Rubrik: Oberfläche   |   VB-Versionen: VB.NET05.04.05
Hintergrundfarbe ändern (VB.NET)

Hier wird gezeigt, wie man einfach & schnell die Hintergrundsfarbe einer Form inkl. aller Controls ändern kann.

Autor:   Bacik Harald / Zero-G.Bewertung:  Views:  32.622 
www.intelli-soft.atSystem:  WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 Beispielprojekt auf CD 

Mit diesem Tipp möchte ich euch zeigen, wie man ganz einfach die Hintergrundfarbe von Formen ändern kann.

Prinzipiell ist das natürlich nicht schwer. Einfach die BackColor-Eigenschaft auf den gewünschten Wert setzen & fertig ist es. - Tja, aber was ist z.B. mit den einzelnen TabPages einer TabControl. Oder wie lasse ich z.B. den Hintergrund einer Textbox trotzdem weiß? Ganz einfach - mit dem nachstehenden Tipp.

Alles was ihr braucht ist der ColorDialog. Ich habe den ColorDialog als "ColorFree" benannt.

Zuerst speichern wir die RGB Farben der ausgewählten Farbe in die Registry.

Dim Antwort As Integer
Antwort = colFree.ShowDialog()
If Antwort <> DialogResult.OK Then Exit Sub
 
Antwort = MsgBox("Sollen die Daten gespeichert und " & _
  "angewendet werden?", MsgBoxStyle.Exclamation + _
  MsgBoxStyle.YesNo, "Bitte bestätigen Sie")
 
If Antwort = MsgBoxResult.Yes Then
  SaveSetting("App", "Daten", "FarbeR", colFree.Color.R)
  SaveSetting("App", "Daten", "FarbeG", colFree.Color.G)
  SaveSetting("App", "Daten", "FarbeB", colFree.Color.B)
  MsgBox("Speicherung erfolgreich durchgeführt!", MsgBoxStyle.Information, _
    "Speichern erfolgreich")
End If

Nachfolgenden Code bitte in ein Modul einügen.

ACHTUNG!
Die wichtigsten Controls sind bereits enthalten - es ist natülrlich noch frei erweiterbar.

Public Sub Hintergrund(ByVal Formular As System.Windows.Forms.Form)
  ' Die Variable für alle Controls
  Dim Ctl As System.Windows.Forms.Control
 
  ' Die Variable für die Controls innerhalb einer TabPage
  Dim CtlTpg As System.Windows.Forms.Control
 
  ' Die Variable für die Controls innerhalb einer GroupBox
  Dim CtlGrp As System.Windows.Forms.Control
 
  ' Zuweisung zum TabControl
  Dim TPc As System.Windows.Forms.TabControl
 
  ' Zuweisung zur GroupBox
  Dim Grp As System.Windows.Forms.GroupBox
 
  ' Hier die Zuweisung der RGB Farben zur Variable Farbe
  ' ##################################################################
  Dim FarbeR As Integer
  Dim FarbeG As Integer
  Dim FarbeB As Integer
 
  FarbeR = GetSetting("App", "Daten", "FarbeR")
  FarbeG = GetSetting("App", "Daten", "FarbeG")
  FarbeB = GetSetting("App", "Daten", "FarbeB")
 
  Dim Farbe As System.Drawing.Color = _
    System.Drawing.Color.FromArgb(FarbeR, FarbeG, FarbeB)
  ' ##################################################################
 
  ' Hintergrundfarbe der Form setzen
  Formular.BackColor = Farbe
 
  For Each Ctl In Formular.Controls
    ' Manche Controls sollen troz Farbänderung immer einen 
    ' weißen Hintergrund haben:
    If TypeOf Ctl Is System.Windows.Forms.TextBox Then
      ' Textbox
      Ctl.BackColor = Color.White
    ElseIf TypeOf Ctl Is System.Windows.Forms.ComboBox Then
      ' Combobox
      Ctl.BackColor = Color.White
    ElseIf TypeOf Ctl Is System.Windows.Forms.RichTextBox Then
      ' RichTextBox
      Ctl.BackColor = Color.White
    ElseIf TypeOf Ctl Is System.Windows.Forms.ListView Then
      ' ListView
      Ctl.BackColor = Color.White
    ElseIf TypeOf Ctl Is System.Windows.Forms.TabControl Then
      ' TabControl
      ' Beim TabControl muss jede TabPage eigens wieder 
      ' angesprochen werden, da die Seiten des TabControls
      ' einzel behandelt werden müssen
 
      ' Übergabe des TabControls auf eine neue Control
      TPc = Ctl
      ' alle Seiten durchblättern
      For i As Integer = 0 To TPc.TabCount - 1
        ' Hintergrund des Controls selbt setzen
        TPc.TabPages(i).BackColor = Farbe
        For Each CtlTpg In TPc.TabPages(i).Controls
          If TypeOf CtlTpg Is System.Windows.Forms.TextBox Then
            ' Textboxen
            CtlTpg.BackColor = Color.White
          ElseIf TypeOf CtlTpg Is System.Windows.Forms.ComboBox Then
            ' Comboboxen
            CtlTpg.BackColor = Color.White
          ElseIf TypeOf CtlTpg Is System.Windows.Forms.ListView Then
            ' Das ListView
            CtlTpg.BackColor = Color.White
          ElseIf TypeOf CtlTpg Is System.Windows.Forms.RichTextBox Then
            ' RichtTextboxen
            CtlTpg.BackColor = Color.White
          ElseIf TypeOf CtlTpg Is System.Windows.Forms.Label Then
            ' Aus VB6 heraus gab es Lines, die in VS2005
            ' nicht mehr unterstützt werden - Statt Lines
            ' hat man nun "enge" Labels. - Alle Labels, 
            ' deren Namen mit einem "_" beginnt, ist eine
            ' Linie und soll deshalb in Schwarz abgebildet
            ' werden
            If Mid(CtlTpg.Name, 1, 1) = "_" Then
              CtlTpg.BackColor = Color.Black
            Else
              ' Alle anderen Labels, sollen natürlich auch
              ' in der gewünschten Hintergrundsfarbe sein
              CtlTpg.BackColor = Farbe
            End If
          ElseIf TypeOf CtlTpg Is System.Windows.Forms.GroupBox Then
            ' Auch für GroupBoxen gilt das gleiche wie für
            ' TabControls - Auch da müssen die Controls 
            ' eigen angesprochen werden
 
            ' Übergabe des Controls
            Grp = CtlTpg
            ' Hintergrund der Groupbox selbst ändern
            Grp.BackColor = Farbe
            ' Jedes Control innerhalb der GroupBox
            ' mit der Hintergrundfarbe setzen
            For Each CtlGrp In Grp.Controls
              If TypeOf CtlGrp Is System.Windows.Forms.TextBox Then
                ' TextBox
                CtlGrp.BackColor = Color.White
              ElseIf TypeOf CtlGrp Is System.Windows.Forms.ComboBox Then
                ' Combobox
                CtlGrp.BackColor = Color.White
              ElseIf TypeOf CtlGrp Is System.Windows.Forms.RichTextBox Then
                ' RichtTextBox
                CtlGrp.BackColor = Color.White
              Else
                ' alle Anderen die Farbe
                CtlGrp.BackColor = Farbe
              End If
            Next
          Else
            ' allen anderen Controls innerhalb des 
            ' TabControls die Farbe zuweisen
            CtlTpg.BackColor = Farbe
          End If
        Next
      Next i
    ElseIf TypeOf Ctl Is System.Windows.Forms.GroupBox Then
      ' Auch für GroupBoxen gilt das gleiche wie für
      ' TabControls - Auch da müssen die Controls 
      ' eigen angesprochen werden
 
      ' Übergabe des Controls
      Grp = Ctl
      ' Hintergrundfarbe der GroupBox selbst setzen
      Grp.BackColor = Farbe
      For Each CtlGrp In Grp.Controls
        If TypeOf CtlGrp Is System.Windows.Forms.TextBox Then
          ' Textboxen
          CtlGrp.BackColor = Color.White
        ElseIf TypeOf CtlGrp Is System.Windows.Forms.ComboBox Then
          ' ComboBoxen
          CtlGrp.BackColor = Color.White
        ElseIf TypeOf CtlGrp Is System.Windows.Forms.RichTextBox Then
          ' RichTextBoxen
          CtlGrp.BackColor = Color.White
        Else
          ' allen anderen die richtige Farbe zuweisen
          CtlGrp.BackColor = Farbe
        End If
      Next
    Else
      ' allen anderen Controls die richtige Farbe zuweisen
      Ctl.BackColor = Farbe
    End If
  Next
End Sub

So, jetzt braucht ihr nur noch im Form_Load-Ereignis der Form folgenden Befehl eingeben...

Hintergrund (Me)

...und schon erscheint alles in der von euch ausgewählten Farbe.

PS: Dieser Code wurde in VS2005 geschrieben und getestet. Sollte aber in allen .NET Versionen funktionieren.
 



Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
(einschl. Beispielprojekt!)

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
 
Copyright ©2000-2024 vb@rchiv Dieter OtterAlle Rechte vorbehalten.


Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.