Créer un thème coloré pour application Windows Forms
Bonjour à tous,
Je cherche à proposer un choix de thèmes de couleur pour une application MDI.
Tout se passe bien sauf pour les menus pour lesquels je fais ça en deux étapes :
1°) Changer la couleur des textes en appelant la Sub suivante avec par exemple ForeColor = Color.White
Code:
1 2 3 4 5 6 7 8 9
|
Private Sub ChangeMenuForeColor(ByVal Menu As MenuStrip, ByVal ForeColor As Color)
For Each a As ToolStripMenuItem In Menu.Items
a.ForeColor = ForeColor
For Each b As Object In a.DropDownItems
b.ForeColor = ForeColor
Next
Next
End Sub |
2° Pour la couleur de fond de menu, j'utilise le code (trouvé sur le Net)
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| Public Class MenuRendererDark
Inherits ToolStripProfessionalRenderer
Dim ColorUnsel As Color = Color.Black
Dim ColorSel As Color = String2Color("FF2F2F2F")
Protected Overloads Overrides Sub OnRenderMenuItemBackground(ByVal e As ToolStripItemRenderEventArgs)
' Item Color
Dim rc As New Rectangle(Point.Empty, e.Item.Size)
Dim c As Color = IIf(e.Item.Selected, ColorSel, ColorUnsel)
Using brush As New SolidBrush(c)
e.Graphics.FillRectangle(brush, rc)
End Using
End Sub
Protected Overrides Sub OnRenderSeparator(ByVal e As ToolStripSeparatorRenderEventArgs)
MyBase.OnRenderSeparator(e)
Dim ColorBrush As Brush = New SolidBrush(ColorUnsel)
' Separator Background
Dim backGround As New Rectangle(0, 0, e.Item.Width, e.Item.Height)
e.Graphics.FillRectangle(ColorBrush, backGround)
Dim blackLine As New Rectangle(32, 3, e.Item.Width - 32, 1)
e.Graphics.FillRectangle(Brushes.Black, blackLine)
Dim whiteLine As New Rectangle(32, 4, e.Item.Width - 32, 1)
e.Graphics.FillRectangle(Brushes.White, whiteLine)
End Sub
End Class |
Et, dans le Form_Load du formulaire parent
Code:
MENU_General.Renderer = New MenuRendererDark()
La difficulté que je rencontre est le changement de ForeColor (étape 1) pour les items du menu Fenêtres au niveau de la liste des textes des formulaires enfants :
Les items "Mosaïque verticale"," Mosaïque horizontale" etc sont bien colorés comme je le souhaite mais les items au delà de "Fermer tout" restent en noir.
Pour moi le problème est que je voulais créer un thème noir :(
Quelqu'un aurait il une idée ?
Merci d'avance