【问题标题】:Appending data to saved file from RichTextBox从 RichTextBox 将数据附加到保存的文件
【发布时间】:2013-12-03 09:48:30
【问题描述】:

我正在使用 RichTextBox 以 .rtf 格式写入数据(文本是彩色编码的)

 RichTextBox .SaveFile(path);

GUI 上有一个“清除文本”按钮,点击它会清除 RichTextBox。

当在 RichTextBox 上打印新数据而不是附加数据时会出现问题,RichTextBox .SaveFile(path) 方法会清除以前的数据并仅包含新添加的数据。

如何追加数据? StreamWriter 正在以纯文本形式写入数据,我需要它在 .RTF 中。

有人可以帮我解决这个问题吗?

【问题讨论】:

  • SaveFile 不会将文本附加到现有文件,它总是会覆盖它。见这里:msdn.microsoft.com/es-es/library/8bf5hy2e(v=vs.110).aspx 这个想法是您将文件的内容加载到 RichTextBox 中,对其进行修改并将文件“按原样”存储在控件中。如果您需要不同的行为,则必须编写它。

标签: c# richtextbox


【解决方案1】:

可以将之前的数据保存在一个变量中,将richTextBox的数据设置为previous+new,然后调用SaveFile方法。

【讨论】:

  • 数据是带有颜色和高亮显示的富文本格式。所以如果我将它存储在一个字符串变量中,所有这些都会丢失。
【解决方案2】:

似乎从富文本框中保存会覆盖文件。您可以查看thisthis 了解更多信息。

建议的一些解决方案是保存到不同的文件,或者读取、连接和保存。

【讨论】:

  • 是的,我相信没有直接的方法可以做到这一点。我正在考虑在清除文本然后将其附加到新值之前有另一个可见性为 false 存储值的富文本框。
  • 听起来像一个解决方案。如果我没记错的话,似乎流会丢失格式。
  • yes exaclty..感谢 Omer Eldan 和 Noctis 的帮助 :) 编码愉快
  • 无后顾之忧,编码愉快:)。如果您认为此问题已得到解答,请随时将任一答复标记为答案。
【解决方案3】:

没有选项可以将文本附加到 RTF 文件,因为您已经从 cmets 读取。 但是,您可以做的是使用 2 个 RichEdit 控件,一个使用 EM_STREAMIN 消息读取流(这将保留 char 格式)并将新数据连接到它。为了保存来自其他 RichEdit 控件(颜色、字体等)的新数据的 char 格式,您必须在选择要连接的新数据时使用 EM_GETCHARFORMAT 消息。然后,您需要使用EM_SETCHARFORMAT 消息和SCF_SELECTION OR SCF_WORD 在RichEdit 控件上设置将所有数据保存在一起的字符格式。之后,使用EM_REPLACESEL 消息将所有数据连接在一起。最后,使用EM_STREAMOUT 消息一次性保存所有流。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多