2015-05-27 37 views
0

我有一個WPF項目,我有一個自動保存的「備份」文件夾。如果用戶在保存項目時選擇了不同的名稱,我首先檢查備份文件夾,並警告他們是否已經有一個具有該名稱的項目。如果是這樣,我想重新打開SaveFileDialog並允許它們重命名。WPF C#SaveFileDialog - 重新打開對話框如果文件名存在於備用文件夾中

SaveFileDialog dlg = new SaveFileDialog(); 
dlg.DefaultExt = ".xml"; 
dlg.Filter = "xml documents (.xml)|*.xml|All Files (*.*)|*.*"; 
dlg.FileName = ProjectName; 
bool? result = dlg.ShowDialog(); 

if (result == true) 
{ 
    string changedFilename = System.IO.Path.GetFileNameWithoutExtension(dlg.FileName); 
    if (changedFilename != CurrentProjectName) 
    { 
     if (ExistingProjectNames.Contains(changedFilename)) 
     { 
      if (MessageBox.Show("Project name " + changedFilename + " already exists. Continue?", "Existing Project Name", MessageBoxButton.OKCancel, MessageBoxImage.Warning) == MessageBoxResult.OK) 
      { 
       CurrentProjectName = changedFilename; 
       WriteFile(dlg.FileName); 
      } 

      else 
      { 
      //go back to beginning and open dialog again so user can rename 
      } 

這似乎很簡單,但我想不出最好的方式來做到這一點。我想過遞歸和切換語句,但似乎我讓它太複雜了。有沒有更「標準」的方式來做到這一點?

回答

1

您可以做的一件事是在顯示對話框之前在對話框中註冊FileOk事件。當用戶按下對話框中的保存按鈕時,會調用事件處理程序,並且您可以選擇設置e.Cancel = true以防止對話框關閉並允許用戶做出另一個選擇。

另一種選擇是在while循環中顯示對話框,直到滿足任何條件,使其保持重新打開狀態,直到用戶做出他們需要做的事情。

+0

FileOk事件聽起來像我正在尋找;用來檢查用戶按下確定時間和對話框關閉時間之間的值。謝謝! – mikeminer