WPF - SaveFileDialog
Я использую SaveFileDialog
в WPF для экспорта в файл excel в определенном loaction, выбранном пользователем. Но между тем, когда открывается SaveFileDailog
, пользователь нажимает на Cancel button
в диалоговом окне, затем я получаю другое диалоговое окно, которое говорит "Do you want to save changes you made to 'Sheet1'?"
, а затем "Export completed"
вместо отмены экспорта.
Так что я должен сделать, чтобы справиться с этим? Любая вещь в WPF что-то вроде 'DialogResult'
, то же самое, что и в winForms?
Ответы
Ответ 1
SaveFileDialog вернет true, если пользователь сохранил (метод ShowDialog
возвращает nullable bool), и возвращает false/null, если пользователь нажал кнопку cancel. Ниже приведен пример MSDN, чтобы вы начали:
// 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;
}
Ответ 2
Вам нужно использовать MessageBox в WPF, чтобы открыть другое окно, когда пользователи нажмут "отменить". Добавьте следующий код в событие кнопки отмены: -
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();
}
}
Ответ 3
Вы должны использовать свойство DialogResult для использования результата диалога в WPF. Для получения дополнительной информации об использовании dialogresult в WPF обратитесь к Диалоги WPF и DialogResult
Ответ 4
Выполняется так, как вы хотите, для отмены и ok Кнопка SaveFileDialog
bool? DialougeResult = saveFileDialog1.ShowDialog();
if(DialougeResult)
{
// your code now its cancel when click cancel button
}