Как изменить ForeColor GroupBox, не применяя этот цвет также к каждому дочернему элементу управления? - PullRequest
3 голосов
/ 19 марта 2009

Мне нужно изменить текст группового блока на определенный цвет, не меняя цвет того, что находится внутри группового блока.

Следующий код устанавливает ForeColor из GroupBox в розовый цвет, но эта настройка также распространяется на все дочерние элементы управления:

groupbox.ForeColor = Color.Pink 

Как изменить ForeColor GroupBox, не применяя этот цвет также к каждому дочернему элементу управления?

Ответы [ 2 ]

4 голосов
/ 19 марта 2009

Вы можете перебрать все элементы управления в GroupBox и установить их соответствующие свойства ForeColor:

groupBox1.ForeColor = Color.Pink;
foreach (Control ctl in groupBox1.Controls) {
    ctl.ForeColor = SystemColors.ControlText;
}
0 голосов
/ 08 июня 2017
form_load()
{
    ...
    foreach (Control ctl in groupbox.Controls) 
    {
        // load color value from parent and explicitly set it to control level
        ctl.ForeColor = ctl.ForeColor;
    }
    ...
}


some_click()
{
    groupbox.ForeColor = Color.Pink;
}

someother_click()
{
    groupbox.ForeColor = Color.Green; 
}

Цвет не устанавливается для childcontrol до тех пор, пока это не будет сделано явно, и когда запрос childcontrol color будет получен от родителя. Изменение цвета родителя обновит весь его контент, а childcontrol получит цвет от родителя.

Если вы установите (явно) дочерний цвет, тогда ребенок не будет «спрашивать» родителя.

Дочерний цвет также можно установить в конструкторе, но если цвет совпадает с цветом родителя, дизайнер уменьшит этот параметр. Код в событии загрузки заставляет ребенка иметь собственный цвет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...