C# 如何通过忽略.rtf文件格式的StreamReader读取.rtf?(不维护)

C# 如何通过忽略.rtf文件格式的StreamReader读取.rtf?(不维护),c#,rtf,streamreader,C#,Rtf,Streamreader,我有一个StreamReader读取.txt、.rtf和.docx文件。 我将读取的内容存储在字符串变量中,然后将此变量打印到RichTextBox 问题是我的RichTextBox背景色是黑色,而前景色是绿色, 因此,如果.rtf文件中的文本颜色为黑色,则它在文本框中不可见, 更不用说它不会使用我在文本框中指定的字体 也许我可以用一个普通的文本框,而不是RichTextBox,但是那样我就不能给文本框中的文本上色了 我如何解决这个问题?一种可能是在表单上有第二个不可见的RichTextBox。

我有一个
StreamReader
读取
.txt
.rtf
.docx
文件。 我将读取的内容存储在
字符串
变量中,然后将此变量打印到
RichTextBox
问题是我的
RichTextBox
背景色是黑色,而
前景色是绿色,
因此,如果
.rtf
文件中的文本颜色为黑色,则它在文本框中不可见, 更不用说它不会使用我在文本框中指定的字体

也许我可以用一个普通的文本框,而不是RichTextBox,但是那样我就不能给文本框中的文本上色了


我如何解决这个问题?

一种可能是在表单上有第二个不可见的RichTextBox
。从
StreamReader
读取RTF,将其存储在隐藏文本框中,然后从隐藏文本框读取文本并将其写入可见文本框。比如:

string rtfText = File.ReadAllText(filename);
hiddenTextBox.Rtf = rtfText;
visibleTextBox.Text = hiddenTextBox.Text;

虽然不太优雅,但它可以为您处理剥离格式的麻烦工作。

一种可能是在表单上有第二个不可见的RichTextBox
。从
StreamReader
读取RTF,将其存储在隐藏文本框中,然后从隐藏文本框读取文本并将其写入可见文本框。比如:

string rtfText = File.ReadAllText(filename);
hiddenTextBox.Rtf = rtfText;
visibleTextBox.Text = hiddenTextBox.Text;

虽然不太优雅,但它可以为您处理剥离格式的麻烦工作。

我认为您仍然可以在文本框中为文本添加颜色。除此之外,您可能会考虑以某种方式从传入字符串中剥离格式。您是否使用
Rtf
属性将此文本设置为RichTextBox?@Andre Calil否,正如我所说,我只是从文件中读取文本,然后读取字符串变量,然后:RichTextBoxName.text=myStringVariable;我认为你仍然可以在文本框中为文本着色。除此之外,您可能会考虑以某种方式从传入字符串中剥离格式。您是否使用
Rtf
属性将此文本设置为RichTextBox?@Andre Calil否,正如我所说,我只是从文件中读取文本,然后读取字符串变量,然后:RichTextBoxName.text=myStringVariable;这就是我要建议的=)@Jim Mischel嗯,没有真正起作用,它仍然需要格式化。奇怪的是,当我读取rtf文件(包含阿拉伯语单词)的内容时,看不见的RichTextBox将文本显示为某种中文或其他东西,当我从看不见的RichTextBox中读取可见的RichTextBox文本时,我得到rtf文件中的原始文本,其格式保持不变。你知道吗,我有一个想法,我将创建一个新的.txt文件,将从.rtf文件中读取的字符串变量的值写入其中,然后重新读取..也不起作用,我猜当我使用Encoding.Unicode选项时,它采用了格式..这就是我要建议的=)@Jim Mischel-hmm,没有真正起作用,它仍然采用格式。奇怪的是,当我读取rtf文件(包含阿拉伯语单词)的内容时,看不见的RichTextBox将文本显示为某种中文或其他东西,当我从看不见的RichTextBox中读取可见的RichTextBox文本时,我得到rtf文件中的原始文本,其格式保持不变。你知道吗,我有一个想法,我将创建一个新的.txt文件,将从.rtf文件中读取的字符串变量的值写入该文件,然后重新读取。我想当我使用Encoding.Unicode选项时,它也会采用该格式。。