2012-02-20 9 views
2

Я добавил следующий фрагмент кода на кнопку сохранения:Win Form: SaveFileDialog

if (saveFileDialog1.ShowDialog() == DialogResult.OK) 
{     
    FileStream fs = new FileStream(saveFileDialog1.FileName, FileMode.Create); 
    StreamWriter writer = new StreamWriter(fs); 
    writer.Write(twexit.Text);  // twexit is previously created 
    writer.Close(); 
    fs.Close(); 
} 

Когда я ввожу имя файла и нажмите кнопку Сохранить, он говорит, что файл не существует. Я знаю, что этого не существует, но я установил FileMode.Create. Итак, не следует ли создавать файл, если он не существует?

+0

Этот код должен работать. Я сам тестировал его, и он работает. – Jordan

ответ

4

Существует CheckFileExists в SaveFileDialog, что приведет к тому, что диалог отобразит это сообщение, если выбранный файл не существует. Вы должны оставить этот набор равным false (это значение по умолчанию).

+0

Это сработало. Спасибо. – Shibli

0

Использование так:

 SaveFileDialog dlg = new SaveFileDialog(); 

     dlg.Filter = "csv files (*.csv)|*.csv"; 
     dlg.Title = "Export in CSV format"; 

     //decide whether we need to check file exists 
     //dlg.CheckFileExists = true; 

     //this is the default behaviour 
     dlg.CheckPathExists = true; 

     //If InitialDirectory is not specified, the default path is My Documents 
     //dlg.InitialDirectory = Application.StartupPath; 

     dlg.ShowDialog(); 
     // If the file name is not an empty string open it for saving. 
     if (dlg.FileName != "") 

     //alternative if you prefer this 
     //if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK 
      //&& dlg.FileName.Length > 0) 

     { 
      StreamWriter streamWriter = new StreamWriter(dlg.FileName); 
      streamWriter.Write("My CSV file\r\n"); 
      streamWriter.Write(DateTime.Now.ToString()); 
      //Note streamWriter.NewLine is same as "\r\n" 
      streamWriter.Write(streamWriter.NewLine); 
      streamWriter.Write("\r\n"); 
      streamWriter.Write("Column1, Column2\r\n"); 
      //… 
      streamWriter.Close(); 
     } 

     //if no longer needed 
     //dlg.Dispose(); 
+0

Можете ли вы объяснить, почему вы проверяете имя файла для пустой строки? из того, что я знаю, вы можете только отменить диалог, но вы не можете нажать кнопку «Сохранить», даже не помещая имя файла – Dementic

+0

, вы, похоже, не проверяете результат диалога. – Dementic

1

Вы можете просто использовать это:

File.WriteAllText(saveFileDialog1.FileName, twexit.Text); 

вместо много кода с потоком. Он создает новый файл или перезаписывает его. Файл является классом System.Io. Если вы хотите сказать, если файл существует, используйте

File.Exist(filePath) 

Bye

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