2009-07-09 2 views
4

У меня есть RichTextBox, и я хочу сохранить текст в файл. Каждая строка RichTextBox заканчивается CR + LF («\ n \ r»), но когда я сохраняю ее в файле, строки содержат только символ LF в конце.Запись содержимого 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

ли вы попробовать метод SAVEFILE, расположенный на самой RichTextBox? http://msdn.microsoft.com/en-us/library/system.windows.forms.richtextbox.savefile(VS.71).aspx –

+0

txtClass.SaveFile (saveFileDialog1.FileName, RichTextBoxStreamType.PlainText); Работал отлично. Благодаря! – Jonathan

+0

@ Джонатан. Не могли бы вы добавить ответ г-на Линдхольмса на этот вопрос и отметить его как ответ? Я наткнулся на ваш вопрос дважды, так как его еще не ответил :) –

ответ

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 - только стандартный простой текстовый файл, который может быть легко читать и редактировать в блокноте.

Вопрос в том, по какой-то причине класс StreamWriter не запишет \ п в файл (до сих пор не знаю, почему - вы думаете, что это было бы) :)

Так простое решение вручную заменить \ п с \ 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); 
    } 
Смежные вопросы