C# - Lavorare con i RichTextBox
C#
Aggiungere testo multicolore
- Il controllo RichTextBox consente di aggiungere testo con diverse formattazioni.
- Il metodo seguente, permette di aggiungere ad una RichTextBox un blocco di testo alla volta, con un colore a scelta.
- Parametri: 'rtb' è la RichTextBox, 'text' è il testo da aggiungere, 'color' è il colore del testo da aggiungere, 'newLine' è un boolean per aggiungere o no, il carattere di 'a capo' dopo il testo.
public static void AddColoredLine(RichTextBox rtb, string text, Color color, bool newLine)
{
rtb.SelectionStart = rtb.TextLength;
rtb.SelectionLength = 0;
rtb.SelectionColor = color;
rtb.AppendText(text + (newLine ? Environment.NewLine : String.Empty));
rtb.SelectionColor = rtb.ForeColor;
}
- Ecco un esempio di utilizzo del metodo precedente. Si presume la presenza di una form con un controllo RichTextBox (in questo esempio esso è 'rtbStato').
FunzioniRichTextBox.AddColoredLine(rtbStato, "Testo in rosso", Color.Red, true);
FunzioniRichTextBox.AddColoredLine(rtbStato, "Testo in blu", Color.Blue, false);
FunzioniRichTextBox.AddColoredLine(rtbStato, "Testo in verde", Color.Green, false);
- Ecco infine il risultato.
- Nel caso che la RichTextBox sia utilizzata dinamicamente con l'aggiunta di molto testo, può essere utile forzare il Refresh di essa. Basta aggiungere dentro il metodo 'AddColoredLine', la seguente riga:
rtb.Refresh();
- Spesso è anche utile far sì che la RichTextBox faccia lo scroll automaticamente fino al cursore. Per ottenere questo risultato basta aggiungere l'evento 'TextChanged' con la chiamata al metodo 'ScrollToCaret()':
private void rtbStato_TextChanged(object sender, EventArgs e)
{
rtbStato.ScrollToCaret();
}