1

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

这是我从我的应用程序写入和保存的时候

在此处输入图像描述

在我保存并在 Windows 记事本中打开后,它变成了这样 在此处输入图像描述

这是我保存文件的代码

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";
}

你知道如何解决吗?

4

2 回答 2

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,最好设置,RichTextBoxStreamType.PlainText只要不使用颜色/字体/保护/缩进/等RTF...

然后,您可以使用以下方法再次读取文件

RichTextBox.LoadFile(string path, RichTextBoxStreamType);

注意:如果文件不在 RTF 中并且您尝试在 RTF ( RichTextBox.LoadFile(string path, RichTextBoxStreamType.RichText);) 中读取它,您可能会遇到格式错误。在这种情况下,您需要捕获异常并以普通或 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);
     }
}

谢谢,
我希望你觉得这有帮助:)

于 2012-10-27T03:24:04.423 回答
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

于 2012-10-27T03:14:44.440 回答