У меня есть RichTextBox, который я пишу строку каждый раз, когда я нажимаю кнопку формы. Каждая строка начинается со строки "Long" или "Short" и заканчивается новой строкой. Каждый раз, когда я добавляю строку, она добавляется к нижней части RichTextBox. Я хотел бы покрасить каждую строку красным, если бы это существо с "длинным" и синим, если оно начинается с "Short". Как я могу это сделать?
Изменение цвета текста в WinForms RichTextBox
Ответ 1
Конечно, поэтому вы можете использовать свойства SelectionStart, SelectionLength и SelectionColor для этого. Он работает достаточно хорошо.
Откроется эта страница для получения информации об этих свойствах.
Вы можете узнать длину текста RichTextBox и покрасить это, когда вы установите значение свойства SelectionStart на текущую длину, получите длину строки, которую вы собираетесь добавить, установите SelectionLength и затем установите SelectionColor соответствующим образом, Промыть и повторить для каждой добавленной строки.
int length = richTextBox.TextLength; // at end of text
richTextBox.AppendText(mystring);
richTextBox.SelectionStart = length;
richTextBox.SelectionLength = mystring.Length;
richTextBox.SelectionColor = Color.Red;
Что-то вроде этого. Это, как я помню, работает.
Ответ 2
Я просто делал это в программе, которую писал. Я делал что-то вроде @itsmatt, но я чувствую себя немного проще. Вы можете просто установить Selectioncolor
, и с этой точки на RichTextBox
будет этот цвет, пока вы не измените его на что-то еще. Если вы тестируете каждую строку, это, похоже, хорошо работает и легко.
if(myString == "Long")
{
richTextBox.SelectionColor = Color.Red;
}
else
{
richTextBox.SelectionColor = Color.Green
}
richTextBox.AppendText(myString);