C#用流填充RichTextBox - 文件格式无效

时间:2017-08-30 22:41:25

标签: c# stream richtextbox migradoc

如何将流中的.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);
}

0 个答案:

没有答案