2009-07-09 135 views
4

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

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

私人无效btnToClipboard_Click(对象发件人,EventArgs的) { //作品如期望 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

你尝试位于RichTextBox的本身SAVEFILE方法? http://msdn.microsoft.com/en-us/library/system.windows.forms.richtextbox.savefile(VS.71).aspx – 2009-07-09 19:01:51

回答

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

我有同样的问题 - 但不希望将其保存为一个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); 
    }