2009-06-02 26 views
6

¿Cómo se cambia el color del texto de un cuadro de grupo en C#? La "documentación" ni siquiera menciona esto, y Google no ha encontrado una respuesta.¿Cambiar el color del texto del cuadro de grupo?

Gracias! Alan

+4

En mi caso, el ForeColor se estableció correctamente (a White, probablemente heredada de la forma, que tenía ForeColor = Blanco y BackColor = Negro), pero estaba mostrando Azul - cambiar a otro color y de nuevo en la ventana de propiedades hizo ¡el truco! Ahora, la propiedad se muestra en negrita, lo que indica que se modificó. –

Respuesta

12

Utilice la propiedad ForeColor. Código de muestra:

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

¡Funciona como un encanto! Gracias Jon! – user20493

1

Supongo que ahora está en winforms no en WPF.

Para cambiar el color del texto de un cuadro de grupo se utiliza ForeColor esto cambia el color de la fuente en el texto de cabecera.

4

Si se refiere al texto mismo cuadro de grupo, a continuación, utilizar lo que ha escrito Jon Skeet. Si se refiere a todos los controles posteriores en el cuadro de grupo, entonces puede utilizar este código:

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

En realidad, todas las respuestas publicadas aquí cambia el color de primer plano de otros controles como el botón, etiqueta etc que reside en el interior del cuadro de grupo. Para cambiar específicamente solo el color del texto del grupo, hay una solución simple.

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

Por supuesto, el código anterior puede carecer de sentido si va a agregar controles mediante programación posterior a la caja de grupo, pero lo bueno es que puede manejar todas las situaciones que mediante la adición de condiciones adicionales en el código. Para estar doblemente seguro, se puede emplear una lista de pares de valores clave de control y forecolor.

+1

¡Qué bueno es trabajar con mate! Esto es lo que estaba buscando. Votos +1 :) –

+0

Tenga en cuenta que lo anterior no es seguro para subprocesos. Si puede cambiar el color del cuadro de grupo y agregar/eliminar controles al mismo tiempo, puede usar un diccionario o una lista de tuplas para guardar la referencia de control con el color, luego enfocar sobre esa colección en el segundo ciclo en lugar de sobre la lista de controles que puede haber cambiado. –

+0

@DeniseSkidmore sí, buen punto, lo mencioné ya en la respuesta a lo largo de esa línea. – nawfal

2

O He cambiado su código un poco para que el usuario puede elegir entre 2 tipos de color para solamente GroupBox:

Pasando valores "verdadero" o "falso" a la mehod superior, va a cambiar el cuadro de grupo ForeColor solamente - mientras que todos los demás controles forecolor permanecerán predeterminados (negro).

un centavo mío.

Cuestiones relacionadas