我在C#中为简单的文本编辑器编写了一些代码,并且我使用了富文本框控件,我发现了一个无法解决的问题。问题是当我在文本编辑器中保存文件然后尝试使用Windows记事本重新打开它时,它变成一行,这就是示例
这是我从我的应用程序编写和保存的时间
我保存并在Windows记事本中打开后就会变成这样
这是我保存fie的代码
try
{
saveFileDialog1.ShowDialog();
this.Text = file = toolStripTextBox1.Text = saveFileDialog1.FileName;
isi = richTextBox1.Text;
write = new System.IO.StreamWriter(file);
write.WriteLine(isi);
write.Close();
toolStripStatusLabel2.Text = "Saved";
}
catch (Exception)
{
toolStripStatusLabel2.Text = "Save cancelled by user";
}
你知道如何解决它吗?
答案 0 :(得分:2)
您可能是因为您尝试仅使用以下代码将richTextBox1.Text
(全文)保存在一行中
isi = richTextBox1.Text;
write = new System.IO.StreamWriter(file);
write.WriteLine(isi);
write.Close();
建议在write.WriteLine()
中的特定行号上使用richTextBox1
,然后转到另一行。
示例强>
for (int i = 0; i < richTextBox1.Lines.Length; i++)
{
write.WriteLine(richTextBox1.Lines[i]);
}
write.Close();
RichTextBox
已经有一个内置函数来保存具有特定编码的文件。您可以将RichTextBox.SaveFile()
用于此目的。
示例强>
RichTextBox.SaveFile(string path, RichTextBoxStreamType);
路径代表代码中的saveFileDialog1.FileName
。对于RichTextBoxStreamType
,只要您不使用RTF(如颜色/字体/保护/缩进/等等),最好将其设置为RichTextBoxStreamType.PlainText
。
然后,您可以使用以下方法再次读取文件
RichTextBox.LoadFile(string path, RichTextBoxStreamType);
注意:如果文件不在RTF中,您尝试在RTF中读取它(RichTextBox.LoadFile(string path, RichTextBoxStreamType.RichText);
)
您可能会遇到格式错误。在这种情况下,您需要捕获异常并以Plain或Unicode编码方式读取文件。
示例强>
RichTextBox _RichTextBox = new RichTextBox();
try
{
_RichTextBox.LoadFile(@"D:\Resources\text.txt", RichTextBoxStreamType.RichText);
}
catch (Exception EX)
{
if (EX.Message.ToLower().Contains("format is not valid"))
{
_RichTextBox.LoadFile(@"D:\Resources\text.txt", RichTextBoxStreamType.PlainText);
}
}
谢谢, 我希望你觉得这很有帮助:)
答案 1 :(得分:0)
使用richtextbox自己的保存方法将RichTextBox的内容保存到文件中:SaveFile(string, RichTextBoxStreamType);
你可以参考:http://msdn.microsoft.com/en-us/library/system.windows.forms.richtextbox.savefile%28VS.71%29.aspx
按LoadFile(Stream, RichTextBoxStreamType);
加载文件内容,请参阅:http://msdn.microsoft.com/en-us/library/system.windows.forms.richtextbox.loadfile(v=vs.71).aspx