如何在不将颜色应用于每个子控件的情况下更改GroupBox的ForeColor?

时间:2009-03-19 13:20:23

标签: c# winforms

我需要将组框文本更改为特定颜色,而不更改组框内部的颜色。

以下代码将ForeColor的{​​{1}}设置为粉红色,但此设置也会级联到所有子控件:

GroupBox

如果没有将颜色应用于每个子控件,如何更改groupbox.ForeColor = Color.Pink 的{​​{1}}?

2 个答案:

答案 0 :(得分:4)

您可以遍历GroupBox中的所有控件并设置各自的ForeColor属性:

groupBox1.ForeColor = Color.Pink;
foreach (Control ctl in groupBox1.Controls) {
    ctl.ForeColor = SystemColors.ControlText;
}

答案 1 :(得分:0)

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颜色请求它从父级获取时。更改父级的颜色将刷新所有内容,而childcontrol将从父级中获取颜色。

如果您设置(明确)儿童颜色,那么孩子将不会"询问"父节点。

儿童颜色也可以在设计师中设置,但如果颜色与父颜色相同,设计师将减少此设置。加载事件中的代码强制子具有自己的颜色。