关于c#:更改组框文字颜色?

 2020-11-25 

Change group box text color?

如何在C#中更改组框的文本颜色?"文档"甚至都没有提到这一点,并且谷歌搜索还没有找到答案。

谢谢!
艾伦


使用ForeColor属性。样例代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
using System;
using System.Drawing;
using System.Windows.Forms;

class Test
{      
    [STAThread]
    static void Main(string[] args)
    {
        Form form = new Form();
        GroupBox group = new GroupBox();
        group.Text ="Text";
        group.ForeColor = Color.Red;
        form.Controls.Add(group);
        Application.Run(form);
    }
}


实际上,这里发布的所有答案都会更改组框内其他控件(如按钮,标签等)的前景色。要专门更改组框的文本颜色,有一个简单的解决方法。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    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文本本身,请使用Jon Skeet发表的内容。如果要引用组框中的所有后续控件,则可以使用以下代码:

1
2
3
4
        foreach (Control c in this.groupBox1.Controls)
        {
            c.ForeColor = this.groupBox1.ForeColor; //or whatever color you want
        }


或者,我对您的代码进行了一些更改,因此用户只能在groupBox的两种颜色之间进行选择:

1
2
3
4
5
6
7
8
9
10
11
    private void SettingGroupBoxColor(bool bSelected)
    {
        if (!bSelected)
            groupBox1.ForeColor = Color.Red;
        else
            groupBox1.ForeColor = Color.Green;
        foreach (Control c in this.groupBox1.Controls)
        {
            c.ForeColor = Color.Black;
        }
    }

将" true"或" false"值传递给上部方法将仅更改groupBox前景色-而所有其他控件前景色将保持默认(黑色)。

一分钱


我假设您现在使用的是Winforms,而不是WPF。

要更改组框的文本颜色,请使用ForeColor,这会更改标题文本中的字体颜色。