无法从Windows记事本中正确读取文件

时间:2012-10-27 03:08:16

标签: c# richtextbox

我在C#中为简单的文本编辑器编写了一些代码,并且我使用了富文本框控件,我发现了一个无法解决的问题。问题是当我在文本编辑器中保存文件然后尝试使用Windows记事本重新打开它时,它变成一行,这就是示例

这是我从我的应用程序编写和保存的时间

enter image description here

我保存并在Windows记事本中打开后就会变成这样 enter image description here

这是我保存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";
}

你知道如何解决它吗?

2 个答案:

答案 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