2011-11-16 13 views
15

Sto utilizzando il SaveFileDialog in WPF per esportare in un file excel in una particolare posizione selezionata dall'utente. Ma tra quando SaveFileDailog viene aperto quindi clilks utente su Cancel button sulla finestra di dialogo, quindi sto ottenendo l'altra finestra di dialogo che dice "Do you want to save changes you made to 'Sheet1'?" e quindi "Export completed" invece di cancellare per l'esportazione.WPF - SaveFileDialog

Quindi cosa devo fare per affrontarlo? Qualcosa in WPF qualcosa come 'DialogResult' che è lo stesso di WinForms?

risposta

2

È necessario utilizzare MessageBox in WPF per aprire un'altra finestra quando gli utenti fanno clic su Annulla. Aggiungere il seguente codice all'evento pulsante di annullamento: -

private void canceButton() 
    { 
     MessageBoxResult key = MessageBox.Show(
      "Are you sure you want to quit", 
      "Confirm", 
      MessageBoxButton.YesNo, 
      MessageBoxImage.Question, 
      MessageBoxResult.No); 
     if (key == MessageBoxResult.No) 
     { 
      return; 
     } 
     else 
     { 
      Application.Current.Shutdown(); 
     } 
    } 
49

SaveFileDialog restituirà true se l'utente salvato (il metodo ShowDialog restituisce un bool nullable), e restituire false/null se premuto utente annullare. Di seguito è riportato un codice di esempio MSDN per iniziare:

// Configure save file dialog box 
Microsoft.Win32.SaveFileDialog dlg = new Microsoft.Win32.SaveFileDialog(); 
dlg.FileName = "Document"; // Default file name 
dlg.DefaultExt = ".txt"; // Default file extension 
dlg.Filter = "Text documents (.txt)|*.txt"; // Filter files by extension 

// Show save file dialog box 
Nullable<bool> result = dlg.ShowDialog(); 

// Process save file dialog box results 
if (result == true) 
{ 
    // Save document 
    string filename = dlg.FileName; 
} 
0

si esibirà come si desidera su Annulla e OK di SaveFileDialog

bool? DialougeResult = saveFileDialog1.ShowDialog(); 
    if(DialougeResult) 
    { 
    // your code now its cancel when click cancel button 
    }