2009-06-02 33 views
6

Come si modifica il colore del testo di una casella di gruppo in C#? La "documentazione" non ne parla nemmeno e Googling non ha trovato una risposta.Cambia il colore del testo della casella di gruppo?

Grazie! Alan

+4

Nel mio caso, ForeColor è stato impostato correttamente (su Bianco, probabilmente ereditato dal Form, che aveva ForeColor = Bianco e BackColor = Nero), ma mostrava Blu - cambiandolo in un altro colore e di nuovo nella finestra delle proprietà ha fatto il trucco! Ora, la proprietà viene visualizzata in grassetto, a indicare che è stata modificata. –

risposta

12

Utilizzare la proprietà ForeColor. Esempio di codice:

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

Funziona come un fascino! Grazie Jon! – user20493

1

Suppongo che tu sia in Winforms non in WPF ora.

Per modificare il colore del testo di una casella di gruppo, utilizzare ForeColor cambia il colore del carattere nel testo dell'intestazione.

4

Se ci si riferisce al testo della casella di gruppo, quindi utilizzare ciò che Jon Skeet ha pubblicato. Se ti riferisci a tutti i controlli successivi nella casella di gruppo, quindi è possibile utilizzare questo codice:

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

In realtà tutte le risposte postato qui cambia il forecolor di altri controlli bottoni, etichette ecc residente all'interno della GroupBox simili. Per modificare in modo specifico solo il colore del testo della groupbox, c'è una soluzione semplice.

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

Naturalmente il codice di cui sopra può essere priva di significato se si sta aggiungendo controlli di programmazione in seguito alla GroupBox, ma la cosa buona è che si può gestire tutte le situazioni che con l'aggiunta di condizioni supplementari in codice. Per essere doppiamente sicuro, può essere utilizzato un elenco di keyvaluepair di control e forecolor.

+1

Ottimo lavoro intorno amico! Questo è quello che stavo cercando. Voti +1 :) –

+0

Nota che quanto sopra non è thread-safe. Se si sta cambiando il colore della casella di gruppo e si aggiungono/rimuovono i controlli contemporaneamente, è possibile utilizzare un dizionario o un elenco di tuple per salvare il riferimento di controllo con il colore, quindi eseguire la ricerca su quella raccolta nel secondo ciclo anziché su la lista dei controlli che potrebbe essere cambiata. –

+0

@DeniseSkidmore sì buon punto, l'ho già detto nella risposta lungo quella linea. – nawfal

2

O ho cambiato il codice un po 'in modo utente può scegliere tra 2 tipi di colore per GroupBox solo:

Passing "vere" o "false" valori al mehod superiore, cambierà il GroupBox Solo ForeColor - mentre tutti gli altri controlli di default resteranno predefiniti (nero).

un mio centesimo.

Problemi correlati