【问题标题】:Writing the content of a RichTextBox to a file将 RichTextBox 的内容写入文件
【发布时间】:2010-11-09 12:03:27
【问题描述】:

我有一个 RichTextBox,我想将文本保存到文件中。 RichTextBox 的每一行都以 CR+LF ("\n\r") 结尾,但是当我将其保存到文件时,这些行只包含末尾的 LF 字符。

如果我将内容复制到剪贴板而不是文件,一切正常(剪贴板的内容在每一行的末尾都有 CR+LF,当我粘贴到 Notepad++ 时可以看到它)。 txtClass 是 RichTextBox。

private void btnToClipboard_Click(object sender, EventArgs e) { //按需要工作 Clipboard.SetText(txtClass.Text); }

private void btnToFile_Click(object sender, EventArgs e)
{
    //Don't work as desired
    SaveFileDialog saveFileDialog1 = new SaveFileDialog();             
    saveFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
    saveFileDialog1.FilterIndex = 2;
    saveFileDialog1.RestoreDirectory = true;

    if (saveFileDialog1.ShowDialog() == DialogResult.OK)
    {
        System.IO.StreamWriter SW = new System.IO.StreamWriter(saveFileDialog1.FileName, false, Encoding.ASCII);              
        SW.Write(txtClass.Text);            
        SW.Close();
    }

}

此时,我也尝试了

SW.NewLine = "\r\n";
SW.Newline = Environment.NewLine

以及所有可用的编码。

如果我使用 SW.Write("Line One\r\nLineTwo\r\nLineThree") 也可以正常工作。

感谢您的帮助

【问题讨论】:

  • 您是否尝试过位于 RichTextBox 本身的 SaveFile 方法? msdn.microsoft.com/en-us/library/…
  • txtClass.SaveFile(saveFileDialog1.FileName, RichTextBoxStreamType.PlainText);完美地工作。谢谢!
  • @Jonathan- 你能在这个问题上添加 Mr.Lindholms 的答案并将其标记为答案吗?我已经两次碰到你的问题了,因为它仍然没有回答:)
  • @Peter Lillevold - 当然!

标签: c# richtextbox iostream newline


【解决方案1】:

感谢 Peter Lindholm,他在评论中给了我正确的答案。

您尝试过 SaveFile 方法吗 位于 RichTextBox 本身? http://msdn.microsoft.com/en-us/library/system.windows.forms.richtextbox.savefile(VS.71).aspx

【讨论】:

    【解决方案2】:

    我有同样的问题 - 但不想保存为 RichTextBox - 只是一个标准的简单 txt 文件,可以在记事本中轻松阅读和编辑。

    问题是由于某种原因 StreamWriter 类没有将 \n 写入文件(仍然不确定为什么 - 你会认为它会):)

    所以一个简单的解决方案是手动将 \n 替换为 \r\n 并按预期完美运行。

    见下面的代码片段:

    if ((myStream = ScriptFileSaveDB.OpenFile()) != null)
    {
        using (StreamWriter sr = new StreamWriter(myStream))
        {
            //Since \n (newlines) are not being written correctly as \r\n
            //Go thru Text and replace all "\n" with \r\n
            tempStr = ScriptProgramWindowRTB.Text;
            tempStr = tempStr.Replace("\n", "\r\n");
            sr.Write(tempStr);
        }
    

    【讨论】:

      【解决方案3】:
      private void btnToFile_Click(object sender, EventArgs e)
      {
          //Don't work as desired
          SaveFileDialog saveFileDialog1 = new SaveFileDialog();
          saveFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
          saveFileDialog1.FilterIndex = 2;
          saveFileDialog1.RestoreDirectory = true;
      
          if (saveFileDialog1.ShowDialog() == DialogResult.OK)
          {
              System.IO.StreamWriter SW = new System.IO.StreamWriter(
                  saveFileDialog1.FileName, false, Encoding.ASCII);
              SW.Write(txtClass.Text);
              SW.Close();
          }
      }
      

      【讨论】:

        猜你喜欢
        • 2013-08-01
        • 2016-09-28
        • 2012-05-18
        • 1970-01-01
        • 1970-01-01
        • 2014-02-28
        • 2014-09-28
        • 2011-12-05
        • 2018-01-08
        相关资源
        最近更新 更多