将RichTextBox的内容写入文件

时间:2009-07-09 18:58:35

标签: c# richtextbox iostream newline

我有一个RichTextBox,我想将文本保存到文件中。 RichTextBox的每一行都以CR + LF(“\ n \ r”)结束,但是当我将它保存到文件时,行末尾只包含LF char。

如果我将内容复制到剪贴板而不是文件都是正确的(剪贴板的内容在每行的末尾都有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

以及所有Enconding avalilables。

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

感谢您的帮助

3 个答案:

答案 0 :(得分:3)

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

  

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

答案 1 :(得分:1)

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

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

所以一个简单的解决方案是用\ r \ n手动替换\ 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);
    }

答案 2 :(得分:0)

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