代码之家  ›  专栏  ›  技术社区  ›  Jonathan

将RichTextBox的内容写入文件

  •  4
  • Jonathan  · 技术社区  · 15 年前

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

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

    private void btntoclipboard_click(对象发送方,事件参数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\nlinetoo \r\nlinethree”)也可以正常工作。

    谢谢你的帮助

    3 回复  |  直到 10 年前
        1
  •  3
  •   Jonathan    15 年前

    感谢彼得·林德霍尔姆,他在评论中给了我正确的答案。

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

        2
  •  1
  •   WillieJoe    10 年前

    我有同样的问题-但不想保存为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);
        }
    
        3
  •  0
  •   takrl cck    13 年前
    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();
        }
    }