2011-04-27 1 views
0

J'ai déjà posé une question très similaire, mais cette fois-ci ce n'est pas une question de syntaxe VB, mais plutôt la meilleure approche. Je fais une méthode qui, lorsqu'elle est passée à un composant, va la recolorer et tous les composants qu'elle contient. Voici le code que j'ai jusqu'à présent, mais il ne recolore pas tous les composants, mais seulement quelques-uns. Mon problème principal est que les boutons restent dans leurs styles "3D" et ne deviennent pas "plats".Recoloration de composant récursif sélectif dans VB

If TypeOf comp Is System.Windows.Forms.ButtonBase Then 
     Dim c As System.Windows.Forms.ButtonBase 
     c = comp 
     c.FlatStyle = Windows.Forms.FlatStyle.Flat 
     c.BackColor = getColor(style, PART_BOX) 
     c.ForeColor = getColor(style, PART_TEXT) 

     comp = c 
    End If 

Le composant est passé comp, et le procédé getColor regarde dans une base de données et renvoie une couleur correspondant au paramètre part transmis à la méthode. Cela fonctionne pour tous les composants de bas niveau et tous les composants simples comme les étiquettes.

This is what happens. As you can see, the colors are fetched and applied properly to many components, but not all.

Comme vous pouvez le voir, ce n'est pas mon préféré résultat. Est-ce que quelqu'un sait comment recolorer des fileurs, des boutons et des barres de menu? Encore une fois, j'ai besoin du bouton pour finir par être plat.

Répondre