在WinForms RichTextBox中更改文本颜色

35

我有一个RichTextBox,在单击表单按钮时,我会向其写入一个字符串。 每个字符串以字符串“Long”或“Short”开头并以换行符结尾。 每次添加字符串时,它都会附加到RichTextBox的底部。 我想如果字符串以“Long”开头就将其颜色设置为红色,如果以“Short”开头则将其颜色设置为蓝色。如何实现这个功能?

2个回答

53
当然,您可以使用SelectionStart、SelectionLength和SelectionColor属性来实现此目的。它非常有效。
请查看此页面以获取有关这些属性的信息。
您可以通过将SelectionStart属性设置为当前长度,获取要附加的字符串的长度,设置SelectionLength,然后根据需要设置SelectionColor来了解RichTextBox文本的长度并进行着色。对于添加的每个字符串都要重复此过程。
int length = richTextBox.TextLength;  // at end of text
richTextBox.AppendText(mystring);
richTextBox.SelectionStart = length;
richTextBox.SelectionLength = mystring.Length;
richTextBox.SelectionColor = Color.Red;

类似这样。我记得它是这样工作的。


你给我的回答很好,让我有了思路,我可以怎样做(基本格式我已经了解了)。
  • 我想要在文本框中实现一些基本格式和着色的 CODE。有没有一些快速解决方案,比如一些免费/开源的控件(可能是NuGet管理器),可以很好地完成格式化工作?
- undefined

41

我刚刚在写的一个程序中做了这件事情。我像@itsmatt一样做了一些工作,但我感觉我做得更简单。你只需要设置Selectioncolor,从那时起RichTextBox会保持该颜色,直到你将其更改为其他颜色。如果你正在测试每一行,这似乎很有效且容易。

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

7
我喜欢这种方法。它比添加文本然后回过头再将其变成不同的颜色更有效率,而且您无需担心选择的起始位置或长度。 - James
4
+1 是因为这个答案比被接受的答案更简单、更优雅。 - Adam Pierce

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接