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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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