Изменить цвет текста группы? - PullRequest
6 голосов
/ 02 июня 2009

Как изменить цвет текста группового поля в C #? «Документация» даже не упоминает об этом, и Google не нашел ответ.

Спасибо! Alan

Ответы [ 5 ]

12 голосов
/ 02 июня 2009

Используйте свойство ForeColor. Пример кода:

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);
    }
}
5 голосов
/ 21 сентября 2011

На самом деле все ответы, опубликованные здесь, изменяют основной цвет других элементов управления, таких как кнопка, метка и т. Д., Находящихся внутри группового блока. Чтобы конкретно изменить только цвет текста группы, существует простой обходной путь.

    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++;
        }
    }

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

4 голосов
/ 02 июня 2009

Если вы ссылаетесь на сам текст группы, то используйте то, что написал Джон Скит. Если вы имеете в виду все последующие элементы управления в групповом окне, то вы можете использовать этот код:

        foreach (Control c in this.groupBox1.Controls)
        {
            c.ForeColor = this.groupBox1.ForeColor; //or whatever color you want
        }
2 голосов
/ 23 мая 2012

Или я немного изменил ваш код, чтобы пользователь мог выбирать между 2 типами цветов только для groupBox:

    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;
        }
    }

Передача значений «истина» или «ложь» в верхний метод изменяет только ForeBolor groupBox - тогда как все остальные элементы управления передним цветом остаются по умолчанию (черный).

цент моего.

1 голос
/ 02 июня 2009

Я предполагаю, что вы находитесь в winforms, а не в WPF.

Чтобы изменить цвет текста группового блока, вы используете ForeColor, это изменит цвет шрифта в тексте заголовка.

...