C# RichTextBox 彩色文本

4

我有一个RichTextBox,想要在里面使用彩色文本。是否有任何标记选项?我希望有类似于这样的东西 [color:red]nick[/color] some message。因为我需要将其保存为文本,并且重新加载时也希望有彩色文本。

我能否不编写自己的方法来实现这样的效果?

4个回答

7
您可以使用 SelectionColor 在 RichTextBox 中设置文本颜色。
如果您想将 RTF 文件保存为纯文本,则需要查看 RTF 格式。例如:

{\rtf1\ansi\deff0 {\colortbl;\red0\green0\blue0;\red255\green0\blue0;} This line is the default color\line \cf2 This line is red\line \cf1 This line is the default color }

编辑: 从这个例子中,首先您需要以以下格式声明颜色表 \colortbl
{\colortbl; color1; color2; ... ; colorN;} 

然后在文本中,您需要使用{\cfN YOUR_TEXT}将文本括起来,其中N是表格中的颜色编号; 您无法指定块{}的边界,然后\ cfN之后的所有内容都将是一种颜色。


我想找一种简单的方法做到这一点,即在调用某些方法后将[color:red]红色文本[/color]变为普通红色文本。我不知道该如何替换这些标记并选择它们之间的文本,并使用选定的颜色。 - sczdavos
最简单的方法是将您的文本保存为rtf格式。这对您来说是一个选项吗? - JleruOHeP
我不确定这是否是一个好方法。我想保存长时间的对话,但rtf格式太长了,我不想有那么大的文件。我认为可以使用正则表达式从标签中获取颜色并将其重新输入为“Color”,然后获取]和[的位置,以便我可以选择它们之间的文本并简单地设置SelectionColor。我知道所有这些,但我不知道如何使用我想要的字符串Regex和方法,这就是我在这里提问的原因。 - sczdavos
在我看来,如果你专注于处理纯文本,那么会有更多的问题和不必要的编码。这将是双向处理 - 你将需要读取纯文本并使其变得丰富多彩,然后你将需要读取rtf并使其成为标记文本。我不认为rtf是那么大的问题 :) 如果你想学习正则表达式,可以在副业项目中学习,首先可以参考http://www.codeproject.com/Articles/9099/The-30-Minute-Regex-Tutorial - JleruOHeP
谢谢提供链接,我会查看的。这行代码只需要放在文件顶部一次吗?{\rtf1\ansi\deff0 {\colortbl;\red0\green0\blue0;\red255\green0\blue0;} 如果是的话,我就会使用它。因为我之前认为需要在每一行都加上这个代码,但那可能是无意义的。 - sczdavos
1
我更新了我的答案,并提供了更好的解释。 - JleruOHeP

3

如其名,RichTextBox包含RichText

要使用“rtf特定标签”更改Rtf文本,您可以设置/使用RichTextBox.RtfProperty

还可以查看RichTextBox.SelectionColor以在代码中着色文本模式

但是,当您不想使用rtf时,您说

需要保存为文本。

您可以编写自己的“标记”,没有内置的,除了rtf / html之外?

但是rtf是文本-一切都是文本

使用RichTextBix.SelectionColor对文本进行着色的示例

richTextBox1.Text = "Hello";
richTextBox1.Select(0,2);
richTextBox1.SelectionColor = Color.Red;

将“Hello”开头的颜色设置为红色, 现在您可以在RichTextBox的RTFProperty中访问'tagged'文本。


0
如果你需要示例来了解RTF中的编码方式,你可以在Word或Wordpad中手动创建文档,并将其保存为RTF格式。这将给你一个关于如何编码格式的提示。此外,如果你正在创建帮助文档,你可以将它们作为嵌入资源包含进来,并直接加载到RichTextBox中,包括所有的格式设置。

-1

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