Установите цвет фона для всех объектов в C#

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

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

Что я ищу:

changeColor_Click
{
 all.BackColor = Color.Black;
}

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

метка1 = синий

метка2 = красный

label3 = желтый

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


person Scott's Oasys    schedule 08.09.2010    source источник
comment
Вы действительно хотите установить цвет фона для всех объектов в форме или только для их выбора?   -  person Jordão    schedule 08.09.2010


Ответы (2)


Вы должны использовать рекурсию.

Простите мой паршивый С#, не использовал его годами, вы поняли...

ChangeColor_Click
{
   ChangeAllBG(this);
}

void ChangeAllBG(Control c)
{
    c.BackColor=Color.Teal;
    foreach (Control ctl in c.Controls)
        ChangeAllBG(ctl);
}
person FastAl    schedule 08.09.2010

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

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

Вызовите этот метод в своей форме следующим образом: SetBackColorRecursive(this, Color.Black);

person BlueCode    schedule 08.09.2010