我有一个 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)。关于c# - 如何将多个 RichTextBox 内容写入一个 RTF 文件并保留每个 RichTextBox 的字体格式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18783847/