| 
            
           | 
          
            | 
          
          
          
          
            
              
              
                
                  | Title | Use system colors (active border, etc.) and respond when the system's colors change in VB .NET |  
                  | Keywords | color, system color, ActiveBorder, InactiveBorder, ActiveCaption |  
                  | Categories | Graphics, VB.NET |  
                 
               |  
              
               
  |  
              | 
Use the Color class's shared FromKnownColor method to get the colors. The KnownColor enumeration includes values for ActiveBorder, InactiveBorder, ActiveCaption, and so forth.
 
A control's SystemColorsChanged event fires when the system's colors change. You can use that event to update your application's colors. (Admitedly this seems like a low-priority exercise for most applications.)
                |  
              
               
  |  
              
                
                  Private Sub SetControlColors()
    Label1.BackColor = _
        Color.FromKnownColor(KnownColor.ActiveBorder)
    Label1.Text = "ActiveBorder"
    Label2.BackColor = _
        Color.FromKnownColor(KnownColor.InactiveBorder)
    Label2.Text = "InactiveBorder"
    Label3.BackColor = _
        Color.FromKnownColor(KnownColor.ActiveCaption)
    Label3.Text = "ActiveCaption"
    Label4.BackColor = _
        Color.FromKnownColor(KnownColor.ActiveCaptionText)
    Label4.Text = "ActiveCaptionText"
    Label5.BackColor = _
        Color.FromKnownColor(KnownColor.InactiveCaption)
    Label5.Text = "InactiveCaption"
    Label6.BackColor = _
        Color.FromKnownColor(KnownColor.InactiveCaptionText)
    Label6.Text = "InactiveCaptionText"
    For Each ctl As Control In Controls
        Dim brightness As Integer = _
            CInt(ctl.BackColor.R) + _
            ctl.BackColor.G + _
            ctl.BackColor.B
        If brightness > 300 Then
            ctl.ForeColor = Color.Black
        Else
            ctl.ForeColor = Color.White
        End If
    Next ctl
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal _
    e As System.EventArgs) Handles MyBase.Load
    SetControlColors()
End Sub
Private Sub Form1_SystemColorsChanged(ByVal sender As _
    Object, ByVal e As System.EventArgs) Handles _
    MyBase.SystemColorsChanged
    SetControlColors()
End Sub
               |  
              
              
              
              |   |  
               
 |  
              |   |  
              
           |  
          
          
          
          
             
           |