web-dev-qa-db-fra.com

Changer la couleur du texte dans une RichTextBox WinForms

J'ai une RichTextBox à laquelle j'écris une chaîne à chaque fois que je clique sur un bouton de formulaire. Chaque chaîne commence par la chaîne "Long" ou "Short" et se termine par une nouvelle ligne. Chaque fois que j'ajoute une chaîne, elle s'ajoute au bas de la RichTextBox. Je voudrais colorer chaque ligne en rouge si elle contient "Long" et en bleu si elle commence par "Court". Comment puis-je faire ceci?

30
Addie

Bien sûr, ce que vous pouvez faire est d'utiliser les propriétés SelectionStart, SelectionLength et SelectionColor pour y parvenir. Cela fonctionne plutôt bien.

Consultez cette page pour plus d'informations sur ces propriétés.

Vous pouvez connaître la longueur du texte RichTextBox et la colorer au fur et à mesure en définissant la propriété SelectionStart sur la longueur actuelle, obtenir la longueur de la chaîne que vous allez ajouter, définir la SelectionLength puis définir la SelectionColor comme approprié. Rincer et répéter pour chaque chaîne ajoutée.

int length = richTextBox.TextLength;  // at end of text
richTextBox.AppendText(mystring);
richTextBox.SelectionStart = length;
richTextBox.SelectionLength = mystring.Length;
richTextBox.SelectionColor = Color.Red;

Quelque chose comme ca. C'est comme ça que je m'en souviens.

46
itsmatt

Je faisais cela dans un programme que j'écrivais. Je faisais quelque chose comme @itsmatt mais je me sens un peu plus simple. Vous pouvez simplement définir le Selectioncolor et à partir de là, le RichTextBox sera cette couleur jusqu'à ce que vous la changiez en autre chose. Si vous testez chaque ligne, cela semble bien fonctionner et c'est facile.

if(myString == "Long") 
{ 
  richTextBox.SelectionColor = Color.Red; 
}
else
{
  richTextBox.SelectionColor = Color.Green
}
richTextBox.AppendText(myString);
36
DTown