Как лучше организовать метод saveFile?

У меня есть метод:

 public void saveFileAs() {

        using (SaveFileDialog saveFileDialog = new SaveFileDialog()) {

            saveFileDialog.Filter = "Текстовые документы (*.txt) | *.txt | Текстовые документы (*.rtf) | *.rtf";

            saveFileDialog.DefaultExt = "*.rtf";

        saveFileDialog.ShowDialog();

            using (StreamWriter sw = new StreamWriter(saveFileDialog.FileName)) {
                sw.Write(richTextBox.Text);
            }
        }
    }

Теперь мне нужно организовать метод saveFile(){}, который напишу псевдокодом:

   if (до этого файл не сохраняли){
   saveFileAs();
   } else {
   записать текст в тот файл, в который уже сохраняли его
   }

Но я не хочу вызывать saveFileDialog еще раз. Как это лучше организовать?


Ответы (1 шт):

Автор решения: Igor
if (streamWriter == null) {
  saveFileAs();
} else {
  streamWriter.Write(richTextBox.Text);
}

И не возвращайте из saveFileAs закрытый StreamWriter.


private string fileName;

public void saveFileAs() {
  if (string.IsNullOrEmpty(fileName)) {
    using (SaveFileDialog saveFileDialog = new SaveFileDialog()) {
      saveFileDialog.Filter = "Текстовые документы (*.txt) | *.txt | Текстовые документы (*.rtf) | *.rtf";
      saveFileDialog.DefaultExt = "*.rtf";
      if (saveFileDialog.ShowDialog() != DialogResult.OK)
        return; 

      fileName = saveFileDialog.FileName;
    }
  }

  using (StreamWriter sw = new StreamWriter(fileName)) {
    sw.Write(richTextBox.Text);
  }
}
→ Ссылка