2010-09-08 7 views
2

Есть ли простой способ установить цвет фона для всех объектов в форме? Я пытаюсь сделать это через событие click, когда все работает. Таким образом, было бы больше одной кнопки. То, что я хотел бы избежать, является имея:Установить цвет фона всех объектов в C#

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

Я ищу:

changeColor_Click 
{ 
all.BackColor = Color.Black; 
} 

Имейте в виду, что каждая метка представляет собой различные цвета фона, чтобы начать на GUI:

label1 = синий

label2 = красный

Метка3 = желтый

У меня много разных объектов, и я пытаюсь найти хороший способ переключения между темами. Любые предложения о том, как я мог бы это достичь?

+0

Вы действительно хотите установить задний цвет для всех объектов в форме или только их выбор? –

ответ

6

Вы должны использовать Recursion.

Пардон мой паршивый C#, не использовали его в годы, вы получите идею ...

ChangeColor_Click 
{ 
    ChangeAllBG(this); 
} 

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

Спасибо, это сработало отлично. Слишком много смысла. –

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

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

Вызов этот метод на вашей форме, как это: SetBackColorRecursive(this, Color.Black);