vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Top-Preis! AP-Access-Tools-CD Volume 1  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück
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:     [ Jetzt bewerten ]Views:  32.555 
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.
 

Dieser Tipp wurde bereits 32.555 mal aufgerufen.

Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

Über diesen Tipp im Forum diskutieren
Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

Neue Diskussion eröffnen

nach obenzurück


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.
 
   

Druckansicht Druckansicht Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle 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.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel