2012-05-14 11 views
13

Voglio mostrare il testo nella casella di testo in 2 colori, ad esempio 1 riga rossa 2 blu, se uso name.ForeColor = Color.Red; tutto il colore cambia colore, ma voglio che cambi solo 1 colore di linea.TextBox multicolore C#

+2

WinForms o WPF? – Tudor

+0

Io uso winform. – Wizard

+0

@Tudor ForeColor è una proprietà di Windows Form – animaonline

risposta

15

È necessario utilizzare un RichTextBox.

È quindi possibile modificare il colore del testo selezionando il testo e cambiando il colore o il carattere di selezione.

richTextBox1.SelectionFont = new Font("Verdana", 12, FontStyle.Bold); 
richTextBox1.SelectionColor = Color.Red; 
36

Utilizzare un RichTextBox per questo, qui è un metodo di estensione da Nathan Baulch

public static class RichTextBoxExtensions 
{ 
    public static void AppendText(this RichTextBox box, string text, Color color) 
    { 
     box.SelectionStart = box.TextLength; 
     box.SelectionLength = 0; 

     box.SelectionColor = color; 
     box.AppendText(text); 
     box.SelectionColor = box.ForeColor; 
    } 
} 

Leggere di più here

+0

qualche idea su come fare con la casella di testo? – Wizard

+0

non c'è modo di farlo con un TextBox wf, dovrai creare il tuo UserControl o usare il RichTextBox ... – animaonline

+0

Sto studiando il tuo codice 'var userid =" USER0001 "; var message = "Accesso negato"; var box = new RichTextBox { Dock = DockStyle.Fill, Font = new Font ("Courier New", 10) }; box.AppendText ("[" + DateTime.Now.ToShortTimeString() + "]", Color.Red); box.AppendText (""); box.AppendText (userid, Color.Green); box.AppendText (":"); box.AppendText (messaggio, Color.Blue); box.AppendText (Environment.NewLine); nuova forma {Controls = {box}}. ShowDialog(); 'e non capisco come farlo RichTextBox non sarà in una nuova forma? – Wizard

0

Prima di tutto, i dettagli + tag che fornite non sono sufficienti - C# non ha un framework di interfaccia utente specifica, ha un paio: WPF, WinForms, ASP.NET, Silverlight.

In secondo luogo, non è possibile eseguire questa operazione con un controllo normale della casella di testo in uno dei precedenti. È necessario trovare/creare un controllo dell'interfaccia utente personalizzata che abbia un comportamento diverso o utilizzare un controllo più avanzato, ad es. una ricca casella di testo.

1

Ecco un esempio con Fontdialog e Colordialog.

void TextfarbeToolStripMenuItemClick(object sender, EventArgs e) 
     { 
      colorDialog1.ShowDialog(); 
      richTextBox1.ForeColor = colorDialog1.Color; 
      listBox1.ForeColor = colorDialog1.Color; 
     } 

     void FontsToolStripMenuItemClick(object sender, EventArgs e) 
     { 
      fontDialog1.ShowDialog(); 
      richTextBox1.Font = fontDialog1.Font; 
      listBox1.Font = fontDialog1.Font; 
     } 

     void HintergrundfarbeToolStripMenuItemClick(object sender, EventArgs e) 
     { 
      colorDialog1.ShowDialog(); 
      richTextBox1.BackColor = colorDialog1.Color; 
      listBox1.BackColor = colorDialog1.Color; 
     }