2012-09-20 50 views
3

我目前在C#中使用Open filewrite file函數。我遇到了兩個問題:當用戶正在保存文件的過程中,如果他/她退出保存對話框並且沒有保存任何內容,則會出現錯誤(請參閱下面的圖片以獲取說明)。我的程序如何避免這種情況而不會崩潰?並且在文件保存後有消息顯示消息嗎?保存對話框消息和空路徑名稱

enter image description here

private void button2_Click(object sender, EventArgs e) 
      { 
       SaveFileDialog saveReport = new SaveFileDialog(); 
       saveReport.Filter = "Text Files | *.txt"; 
       saveReport.ShowDialog(); 

       StreamWriter writeFile = new StreamWriter(saveReport.FileName); 
       writeFile.Write(textBox1.Text); 
       writeFile.Close(); 

      } 

回答

1

你可以做這樣的事情:

var saveReport = new SaveFileDialog(); 
saveReport.Filter = "Text Files | *.txt"; 
var result = saveReport.ShowDialog(); 

if(result == DialogResult.Cancel || string.IsNullOrWhiteSpace(saveReport.FileName)) 
    return; 

using(var writer = new StreamWriter(saveReport.FileName)) 
{ 
    writer.Write(textBox1.Text); 
    writer.Close(); 
} 

MessageBox.ShowDialog("File Saved!"); 

原則文件名永遠不會null或空白 - 對話框阻止它,除非你取消,但我包括它的清晰度。

+0

謝謝,但我得到這個錯誤:''System.Windows.Forms.MessageBox'不包含'ShowDialog'' – techAddict82

+0

@ charliecodex23的定義只是'顯示'然後。 – Jay

1

如果用戶點擊取消,ShowDialog()將返回DialogResult.Cancel

您可以在if聲明中檢查此項。

1

使用您的ShowDialog調用的返回值來確定用戶選擇的內容。

下面的代碼只有當用戶在對話框中選擇確定保存:

SaveFileDialog saveReport = new SaveFileDialog(); 
saveReport.Filter = "Text Files | *.txt"; 
if (saveReport.ShowDialog() == DialogResult.OK) { 
    StreamWriter writeFile = new StreamWriter(saveReport.FileName); 
    writeFile.Write(textBox1.Text); 
    writeFile.Close(); 
} 

與原代碼的問題是,您試圖保存,即使用戶沒有通過指定文件名對話。