アプリケーションを閉じる前にユーザーに質問したい。 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の Application Management ページをご覧ください。
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();
}
}