C# 将RichTextBox的内容写入文件

C# 将RichTextBox的内容写入文件,c#,richtextbox,iostream,newline,C#,Richtextbox,Iostream,Newline,我有一个RichTextBox,我想将文本保存到一个文件中。RichTextBox的每一行都以CR+LF(“\n\r”)结尾,但当我将其保存到文件中时,这些行的结尾仅包含LF字符 如果我将内容复制到剪贴板而不是文件,则一切正常(剪贴簿的内容在每行末尾都有CR+LF,我可以在粘贴记事本++时看到它)。txtClass是RichTextBox 私有无效BTNTO剪贴板\u单击(对象发送者,事件参数e) { //工作正常 Clipboard.SetText(txtClass.Text); } 在这一刻

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

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

私有无效BTNTO剪贴板\u单击(对象发送者,事件参数e) { //工作正常 Clipboard.SetText(txtClass.Text); }

在这一刻,我也试过了

SW.NewLine = "\r\n";
SW.Newline = Environment.NewLine
和所有可获得的信息

如果我使用 Write(“第1行\r\nLineTwo\r\nLineThree”)也可以正常工作


谢谢你的帮助

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


你试过SaveFile方法吗 是否位于RichTextBox本身上?


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

问题是由于某些原因StreamWriter类没有将\n写入文件(仍然不确定原因-您可能会认为是这样):)

因此,一个简单的解决方案是手动将\n替换为\r\n,并按预期完美工作

请参见下面的代码snipit:

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

您是否尝试了RichTextBox本身上的SaveFile方法?SaveFile(saveFileDialog1.FileName,RichTextBoxStreamType.PlainText);工作得很好。谢谢@乔纳森-你能把林德霍姆先生的答案加在这个问题上,并把它标记为一个答案吗?我已经两次碰到你的问题了,因为它仍然没有得到回答:)@Peter Lillevold-当然!
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();
    }
}
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);
    }