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

我想在关闭申请前询问用户。 我是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; } } 

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

有关更多信息, 请查看MSDN上的“ 应用程序管理”页面。

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

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

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