我有一个Winforms项目,可以在其中将文本写到RichTextBox中,还有一些控件可以设置所写文本的字体格式。我可以保存文本并将其附加到RTF文件中,但是在保存每个RichTextBox的字体格式时遇到问题。有帮助吗?
代码:
RichTextBox r1 = new RichTextBox();
RichTextBox r2 = new RichTextBox();
string nickName = "Test: ";
string message = "Hi this is a test message";
r1.Text = nickName;
r1.ForeColor = Color.Blue;
r2.Text = message;
r2.ForeColor = Color.Black;
string path = @"d:\Test.rtf";
if (!File.Exists(path))
{
using (FileStream fs = new FileStream(path, FileMode.Create, FileAccess.Write))
using (StreamWriter sw = new StreamWriter(fs))
{
sw.WriteLine(r1.Rtf);
sw.WriteLine(r2.Rtf);
sw.Close();
}
}
else
{
using (FileStream fs = new FileStream(path, FileMode.Append, FileAccess.Write))
using (StreamWriter sw = new StreamWriter(fs))
{
sw.WriteLine(r1.Rtf);
sw.WriteLine(r2.Rtf);
sw.Close();
}
}
您可以通过将所有内容合并到同一内容中来避免此问题RichTextBox
。样本:
r1.Text = r1.Text + Environment.NewLine;
r1.SelectAll();
r1.Copy();
r2.Paste();
r2.SaveFile(path);
StreamWriter
在您使用该方法时,该方法可以很好地工作。另一方面,为什么不使用更简单/为此目的专门设计的方法(SaveFile
)?如果您不想替换中的内容r2
,则可以依靠临时方法RichTextBox
:
r1.Text = r1.Text + Environment.NewLine;
r1.SelectAll();
r1.Copy();
RichTextBox temp = new RichTextBox();
temp.Paste();
r2.SelectAll();
r2.Copy();
temp.Paste();
temp.SaveFile(path);
注意:使用StreamWriter
(例如追加)时可能会出现问题。请记住,RTF是一种特殊格式,需要特殊处理:从RichTextBox
控件中进行任何修改(添加,删除,编辑等文本/格式),并依靠方法LoadFile
和SaveFile
,而不是TXT文件中的方法(即StreamReader / StreamWriter)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句