更改 WinForms RichTextBox 中文本的颜色 [重复]

Posted

技术标签:

【中文标题】更改 WinForms RichTextBox 中文本的颜色 [重复]【英文标题】:Change color of text within a WinForms RichTextBox [duplicate] 【发布时间】:2011-02-01 10:21:18 【问题描述】:

我有一个 RichTextBox,每次单击表单按钮时都会写入一个字符串。每个字符串都以字符串“Long”或“Short”开头,并以换行符结尾。每次我添加一个字符串时,它都会附加到 RichTextBox 的底部。如果每条线以“长”开头,我想将每条线涂成红色,如果以“短”开头,我想将其涂成蓝色。我该怎么做?

【问题讨论】:

【参考方案1】:

当然,您可以使用 SelectionStart、SelectionLength 和 SelectionColor 属性来完成此操作。效果很好。

查看this page 了解这些属性的信息。

您可以通过将 SelectionStart 属性设置为当前长度来了解 RichTextBox 文本的长度并为其着色,获取要附加的字符串的长度,设置 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);

【讨论】:

我喜欢这种方法。感觉比附加文本然后返回并使其变为不同颜色更有效,而且您无需担心选择开始/长度。 +1 因为这比公认的答案更简单、更优雅。

以上是关于更改 WinForms RichTextBox 中文本的颜色 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在不选择 RichTextBox 的情况下恢复插入符号位置或更改文本颜色

C#Winforms RichTextBox。如何按rtb的大小限制字符数?

RichTextBox C# 设置插入符号位置 winforms

Winforms文本框 - 使用Ctrl-Backspace删除整个单词

检测 RichTextBox 中插入符号位置何时更改

如何更改 RichTextBox 段落间距?