【问题标题】:From RichTextBox to text files, line after line从 RichTextBox 到文本文件,一行一行
【发布时间】:2012-11-06 12:55:34
【问题描述】:

我无法将文件从 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);
        }

【问题讨论】:

    标签: c# text save richtextbox


    【解决方案1】:

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

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

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

    示例

    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);
    

    path 在您的代码中代表 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);
         }
    }
    

    谢谢,
    希望对您有所帮助:)

    【讨论】:

      【解决方案2】:

      我知道这个问题已经很老了,但这里有一个替代代码供将来可能遇到这个问题的人使用

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

      【讨论】:

      • 谢谢。它解决了我转换换行符的问题。
      • 避免使用WriteAllLines,如果你有更好的选择,因为它本质上是阻塞的。
      【解决方案3】:
      if (saveFileDialog2.ShowDialog() == DialogResult.OK)
      {
          StreamWriter sw = File.CreateText(saveFileDialog2.FileName);
          foreach(String s in richTextBox1.Lines)
          {
              sw.WriteLine(s);
          }
          sw.Flush();
          sw.Close();
      }
      

      【讨论】:

      • 它给了我ABC ... SDE ...,然后是另一行KLO ...,但它仍然不是我想要的。这里有什么问题?
      猜你喜欢
      • 2021-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-06
      • 1970-01-01
      • 2013-05-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多