首页 文章

如何将多个RichTextBox内容写入一个RTF文件,保留每个RichTextBox的字体格式

提问于
浏览
3

我有一个Winforms项目,我可以将文本写入RichTextBox,还有一些控件来设置书面文本的字体格式 . 我能够将文本保存并附加到RTF文件,但我遇到了保留每个RichTextBox的 font formats 的问题 . 任何帮助?

码:

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();
    }
}

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) .

相关问题