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 
    }