如何将流中的.rtf数据加载到RichTextBox?
我正在尝试使用以下代码将.rtf流放入RichTextBox:
using (Stream s = GenerateStreamFromString(rtfString))
{
rtbDisplay.LoadFile(s, RichTextBoxStreamType.RichText);
renderer.Render(document, "C:\\Users\\fairskunk\\Desktop\\test.rtf", null);
}
最后一行使用MigraDoc创建一个.rtf文件并保存。我可以在传统的编辑器中打开该文件。
第一行不起作用 - 我得到一个"文件格式无效"我尝试从流而不是文件将数据加载到RichTextBox时出错。
未处理的类型' System.ArgumentException'发生在> System.Windows.Forms.dll
中其他信息:文件格式无效。
当程序第一次执行时,我将先前导出的(通过上面的最后一行).rtf文件直接加载到RichTextBox中,显示就好了:
rtbDisplay.LoadFile("C:\\Users\\fairskunk\\Desktop\\test.rtf",
RichTextBoxStreamType.RichText);
.rtf流应该很好,因为它可以导出到传统编辑器可以读取的文件中。为什么我不能将流放入RichTextBox?
编辑 - 问题已解决
我在上面没有插入的代码中错误地使用了MigraDoc RtfDocumentRenderer.RenderToString()命令。
RenderToString有两个参数;要呈现的文档和工作目录的字符串(' null'似乎有效)。它返回渲染文档的字符串。
我认为参数中的字符串收到了渲染文档。 RenderToString确实渲染了文档,但结果字符串未分配给任何内容。
更正后的代码:
string rtfString = "";
MemoryStream stream = new MemoryStream();
RtfDocumentRenderer renderer = new RtfDocumentRenderer();
rtfString = renderer.RenderToString(document, null);
using (Stream s = GenerateStreamFromString(rtfString))
{
rtbDisplay.LoadFile(s, RichTextBoxStreamType.RichText);
//renderer.Render(document, "C:\\Users\\fairskunk\\Desktop\\test.rtf", null);
}