2017-02-07 4 views
-1

Я просмотрел несколько ответов на подобные вопросы, но почему-то это не работает для меня. Я пытаюсь сохранить содержимое текстового поля в файл пользовательского приглашения.Как сохранить содержимое текстового поля в файл

private void btnSave_Click(object sender, EventArgs e) 
{ 
    Stream myStream; 
    SaveFileDialog saveFileDialog1 = new SaveFileDialog(); 

    saveFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*"; 
    saveFileDialog1.FilterIndex = 2; 
    saveFileDialog1.RestoreDirectory = true; 

    if (saveFileDialog1.ShowDialog() == DialogResult.OK) 
    { 
     if ((myStream = saveFileDialog1.OpenFile()) != null) 
     { 
      File.WriteAllText(saveFileDialog1.FileName, rtbIncoming.Text); 
      myStream.Close(); 
     } 
    } 
}  

Запрос пользователя появляется, как ожидается, и файл создается, но без какого-либо контента.

+0

Хорошо, что вы открываете файл дважды. Просто удалите внутренний if (и 'myStream') и он должен работать. –

+0

Почему вы используете метод SaveFileDialog.OpenFile? Это блокирует запись текста в файл. –

+0

Я понимаю, что теперь, и это работает, изменив его на ответ ниже. – Claudi

ответ

2

Вам не нужно открывать поток файлов самостоятельно. File.WriteAllText() делает все это для вас. Таким образом, это должно быть достаточно:

if (saveFileDialog1.ShowDialog() == DialogResult.OK) 
    File.WriteAllText(saveFileDialog1.FileName, rtbIncoming.Text); 

Я предполагаю, что ваш код приводит к пустому файлу , потому что вы открываете отдельный поток, который не используется для записи и закрывается (и покрасневшим) после призыва к WriteAllText() ,

Смежные вопросы