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

xiozqbni  于 2023-10-22  发布在  C#
关注(0)|答案(5)|浏览(141)

我想在关闭应用程序之前询问用户。我使用的是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;
    }
}
4szc88ey

4szc88ey1#

如果调用Application.Current.Shutdown(),则无法取消关闭事件。只需调用Window.Close()方法,这将给给予您否决关闭操作的机会。一旦所有程序窗口关闭,应用程序将自动关闭。
有关更多信息,请查看MSDN上的应用程序管理页面。

xqkwcwgp

xqkwcwgp2#

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

2nbm6dog

2nbm6dog3#

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;
}
9w11ddsr

9w11ddsr4#

为什么不直接询问用户是否要关闭应用程序,然后像这样调用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();
    }
}
zzlelutf

zzlelutf5#

如果你想在关闭前添加一个事件日志,
public partial class:窗口

this.Closing += new ((sender, e) => {
if (MessageBox.Show("Do you want to exit?", "Confirm", MessageBoxButton.YesNo) == MessageBoxResult.Yes) {
  Application.Current.Shutdown();
}
else {
  e.Cancel = true;
}
});

相关问题