Запись содержимого RichTextBox в файл - PullRequest
4 голосов
/ 09 июля 2009

У меня есть RichTextBox, и я хочу сохранить текст в файл. Каждая строка RichTextBox заканчивается символом CR + LF ("\ n \ r"), но когда я сохраняю его в файл, в конце строки содержится только символ LF.

Если я копирую содержимое в буфер обмена, а не в файл, все идет хорошо (содержимое конца буфера имеет CR + LF в конце каждой строки, я вижу его, когда вставляю в Notepad ++). txtClass - это RichTextBox.

private void btnToClipboard_Click (отправитель объекта, EventArgs 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

и со всеми доступными Enconding.

Если я использую SW.Write ("Line One \ r \ nLineTwo \ r \ nLineThree") также отлично работает.

Спасибо за вашу помощь

Ответы [ 3 ]

3 голосов
/ 20 июля 2009

Спасибо Питеру Линдхольму, который дал мне правильный ответ в комментарии.

Вы пробовали метод SaveFile находится на самом RichTextBox? http://msdn.microsoft.com/en-us/library/system.windows.forms.richtextbox.savefile(VS.71).aspx

1 голос
/ 01 марта 2014

У меня была та же проблема - но я не хотел сохранять ее как RichTextBox - просто стандартный простой текстовый файл, который можно было легко прочитать и отредактировать в блокноте.

Проблема в том, что класс StreamWriter НЕ записывает \ n в файл (все еще не уверен почему - вы бы подумали):)

Таким образом, простое решение состоит в том, чтобы вручную заменить \ n на \ r \ 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);
    }
0 голосов
/ 16 января 2010
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();
    }
}
...