Pagina personale di:
Carlo Vecchio
appunti di C#, R, SQL Server, ASP.NET, algoritmi, numeri
Vai ai contenuti

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


© 2020 Carlo Vecchio
Torna ai contenuti