在关闭C#WPF应用程序之前询问用户

时间:2010-10-14 16:57:37

标签: c# .net wpf events

我想在关闭申请前询问用户。 我是C#.NET 4.0应用程序。我正在使用WPF。我可以在Windows窗体中执行此操作,但不能在WPF中执行。 当用户想要关闭应用程序时会触发事件,消息框出现,包子无论按下哪个按钮(是或否)应用程序始终关闭。为什么?错误在哪里?

它有效,但只有当用户按“X”时才有效。当用户按下Application.Current.Shutdown()时按钮;它不起作用。

private void MainWindowDialog_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
    MessageBoxResult result = MessageBox.Show("Do you really want to do that?", "Warning", MessageBoxButton.YesNo, MessageBoxImage.Question);
    if (result == MessageBoxResult.No)
    {
        e.Cancel = true;
    }
}

4 个答案:

答案 0 :(得分:31)

如果您致电Application.Current.Shutdown(),则无法取消关闭事件。只需调用Window.Close()方法,这将使您有机会否决关闭操作。一旦所有程序的窗口关闭,应用程序将自动关闭。

有关详细信息,请查看MSDN上的Application Management页面。

答案 1 :(得分:8)

只需调用YourMainWindow.Close()并使用之前描述的Closing事件。

答案 2 :(得分:5)

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
    if (MessageBox.Show("Are you sure to exit?", "Exit", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
        e.Cancel = false;
    else
        e.Cancel = true;
}

答案 3 :(得分:1)

为什么不问用户是否要关闭该应用,然后像这样拨打Application.Current.Shutdown()

    private void closeButton_Click(object sender, RoutedEventArgs e)
    {
        if (MessageBox.Show("Do you want to exit?", "Confirm", MessageBoxButton.YesNo) == MessageBoxResult.Yes)
        {
            Application.Current.Shutdown();
        }
    }