2010-09-08 5 views
2

Existe-t-il un moyen facile de définir la couleur d'arrière-plan de tous les objets d'un formulaire? Im essayant de le faire par l'événement de clic quand tout est en cours d'exécution. Il y aurait donc plus d'un bouton. Ce que je voudrais éviter est d'avoir:Définir la couleur d'arrière-plan de tous les objets en C#

changeColor_Click 
{ 
    label1.BackColor = Color.Black; 
    label2.BackColor = Color.Black; 
    label3.BackColor = Color.Black; 
    etc... 
} 

Ce que je cherche:

changeColor_Click 
{ 
all.BackColor = Color.Black; 
} 

Gardez à l'esprit que chaque étiquette est une arrière-plans de couleurs différentes pour démarrer sur l'interface graphique:

label1 = bleu

label2 = rouge

label3 = jaune

J'ai beaucoup d'objets différents et j'essaie de trouver un bon moyen de basculer entre les thèmes. Des suggestions sur la façon dont je pourrais y parvenir?

+0

Voulez-vous vraiment définir la couleur de retour pour tous les objets dans un formulaire, ou juste pour une sélection d'entre eux? –

Répondre

6

Vous devez utiliser Recursion.

Pardon mon moche C#, ne l'ont pas utilisé dans les années, vous avez l'idée ...

ChangeColor_Click 
{ 
    ChangeAllBG(this); 
} 

void ChangeAllBG(Control c) 
{ 
    c.BackColor=Color.Teal; 
    foreach (Control ctl in c.Controls) 
     ChangeAllBG(ctl); 
} 
+0

Merci, cela a parfaitement fonctionné. Cela a aussi beaucoup de sens. –

2
void SetBackColorRecursive(Control control, Color color) 
{ 
    control.BackColor = color; 

    foreach (Control c in control.Controls) 
     SetBackColorRecursive(c, color); 
} 

Appelez cette méthode sur votre formulaire comme ceci: SetBackColorRecursive(this, Color.Black);

Questions connexes