Changer la couleur du texte dans un WinForms RichTextBox [dupliquer]

Cette question a déjà une réponse ici:

J'ai un RichTextBox dans lequel 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 un retour à la ligne. Chaque fois que j'ajoute une chaîne, elle s'ajoute au bas de la RichTextBox. J'aimerais pour colorer chaque ligne rouge si elle est "longue" et bleue si elle commence par "Courte". Comment puis-je faire cela?

29
demandé sur Addie 2010-03-27 03:42:35

2 réponses

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

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

Vous pouvez connaître la longueur du texte RichTextBox et le colorier 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 SelectionLength, puis Définir SelectionColor le cas échéant. Rincer et répétez 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 ça. C'est comme ça que je me souviens que ça fonctionnait.

46
répondu itsmatt 2015-06-16 14:55:32

Je faisais ça 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 ce point, le RichTextBox sera cette couleur jusqu'à ce que vous le changiez en autre chose. Si vous testez chaque ligne cela semble fonctionner bien et est facile.

if(myString == "Long") 
{ 
  richTextBox.SelectionColor = Color.Red; 
}
else
{
  richTextBox.SelectionColor = Color.Green
}
richTextBox.AppendText(myString);
35
répondu DTown 2013-04-10 09:16:28