0

我无法将文件从 Richtextbox 保存到文本文件。

我的richtextbox 是这样的;

ABC    ...
 SDE   ...
KLO    ...

我保存后它看起来像这样:

ABC ... SDE ... KLO ...

但我想要一行接一行的像richtextbox一样。我做错了什么?

 if (saveFileDialog2.ShowDialog() == DialogResult.OK)
        {
            StreamWriter sw = File.CreateText(saveFileDialog2.FileName);
            sw.WriteLine(richTextBox1.Text);
            sw.Flush();
            sw.Close();

            //File.WriteAllText(saveFileDialog2.FileName, str);
        }
4

3 回答 3

8

您可能会得到这个,因为您试图richTextBox1.Text仅使用以下代码将(整个文本)保存在一行中

StreamWriter sw = File.CreateText(saveFileDialog2.FileName);
sw.WriteLine(richTextBox1.Text);
sw.Flush();
sw.Close();

建议sw.WriteLine()在特定的行号上使用,richTextBox1然后移动到另一行。

例子

for (int i = 0; i < richTextBox1.Lines.Length; i++)
{
    sw.WriteLine(richTextBox1.Lines[i]);
}
sw.Flush();
sw.Close();

另一种解决方案


已经有一个内置函数用于RichTextBox保存具有特定编码的文件。您可以RichTextBox.SaveFile()用于此目的。

例子

RichTextBox.SaveFile(string path, RichTextBoxStreamType);

Wherepath代表saveFileDialog2.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-11-06T13:10:10.483 回答
3

我知道这个问题已经很老了,但是对于将来可能遇到此问题的人来说,这是一个替代代码

File.WriteAllLines(saveFileDialog1.FileName, richTextBox1.Lines);

于 2013-03-11T06:23:37.437 回答
0
if (saveFileDialog2.ShowDialog() == DialogResult.OK)
{
    StreamWriter sw = File.CreateText(saveFileDialog2.FileName);
    foreach(String s in richTextBox1.Lines)
    {
        sw.WriteLine(s);
    }
    sw.Flush();
    sw.Close();
}
于 2012-11-06T13:01:28.590 回答