3

我有一个 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();
    }
}
4

1 回答 1

3

您可以通过将所有内容合并到同一个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控件执行任何修改(添加、删除、编辑等文本/格式)并依赖于方法LoadFileSaveFile,而不是那些用于 TXT 文件的方法(即,StreamReader/StreamWriter)。

于 2013-09-13T11:54:04.760 回答