如何设置GroupBox标题的颜色

4

在我的系统中,GroupBox的标题始终是深蓝色的,我该如何更改它?

回答如何更改GroupBox边框的颜色?的方法显示了如何覆盖标题和边框的绘制,但我不想处理视觉样式、圆角等问题。

6个回答

4

ForeColor是控制groupbox中文本颜色的属性。


但是这并没有回答如何改变标题颜色的问题,而这个问题又不受ForeColor的影响。 - undefined
@NapkinBob:14年前,我猜它确实回答了问题,因为提问者接受了它。 - undefined
我真的以为答案是2019年的。我注意到在我的项目中,有时当我改变前景色时,它会改变一切,但标签不会改变,但如果我把它改回另一种颜色,然后再改变,它就可以正常工作,所以我猜这是VS设计器中的一个bug?就像你提到的那样,它似乎是有效的。 - undefined

3
这应该能解决问题:
public Form1()
{
  InitializeComponent();
  GroupBoxRenderer.RenderMatchingApplicationState = false;
  groupBox1.ForeColor = Color.Green;
}

这是我之前提出的另一个问题的答案,如果您将此答案发布到[https://dev59.com/-kbRa4cB1Zd3GeqP27Ia],我会在那里接受它。 - Patrick McDonald

1

以上内容对我没有帮助。
我通过添加GroupBox.Header标签在这里找到了解决方案:

<GroupBox>
  <GroupBox.Header>
      <TextBlock Text="Header" Foreground="Black"/>
  </GroupBox.Header>
</GroupBox>

4
这是针对WPF而不是WinForms的。 - almhe03

1

看起来我可以通过将ForeColor设置为所需的颜色并将FlatStyle设置为Standard来设置标题颜色。

如果FlatStyle是System,或者它是Standard且ForeColor未从默认值更改,则标题颜色设置为XP主题中指定的颜色。


0

设置

groupBox1.ForeColor

更改组合框内其他控件(如按钮、标签等)的前景色,这在大多数情况下是不必要的,如果您只需要更改组合框的文本颜色。一个简单的解决方法是

    private void button1_Click(object sender, EventArgs e)
    {
        List<Color> lstColour = new List<Color>();
        foreach (Control c in groupBox1.Controls)
            lstColour.Add(c.ForeColor);

        groupBox1.ForeColor = Color.Red; //the colour you prefer for the text

        int index = 0;
        foreach (Control c in groupBox1.Controls)
        {
            c.ForeColor = lstColour[index];
            index++;
        }
    }

当然,如果您稍后以编程方式向GroupBox添加控件,则上述代码可能毫无意义,但好处是您可以通过在代码中添加额外条件来处理所有这些情况。为了确保双重保险,可以使用控件和前景色的键值对列表。

0
在Delphi中,标题至少只是字体颜色,您需要确保parentfont为false。但是,由于您标记了您的问题.net,这可能对您没有任何用处。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接