ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

CodeGo.net>如何将几个RichTextBox内容写入一个RTF文件,以保留每个RichTextBox的字体格式

2019-11-22 20:07:26  阅读:244  来源: 互联网

标签:streamwriter rtf c winforms


我有一个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).

标签:streamwriter,rtf,c,winforms
来源: https://codeday.me/bug/20191122/2062362.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有