2009-07-09 138 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); 
    }