当我按下Exit按钮时,我编写了这段代码来处理程序/窗口的关闭:
private void MIExit_Click(object sender, RoutedEventArgs e)
{
var close = MessageBox.Show("Do you want to close the programm?", "", MessageBoxButton.YesNo);
if (close == MessageBoxResult.No)
return;
else
Application.Current.Shutdown();
}
问题是我必须两次按“是”才能关闭申请,我不明白为什么。
谢谢你, 菲利普
答案 0 :(得分:1)
private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
var close = MessageBox.Show("Do you want to close the programm?", "", MessageBoxButton.YesNo);
if (close == MessageBoxResult.No)
e.Cancel = true;
else
e.Cancel = false;
}
显然,messageBox出现了两次......
答案 1 :(得分:0)
您发布的代码没有问题。
可能你还有其他地方的错误。
我这样试过:
XAML:
<Button Click="MIExit_click">Exit</Button>
C#:
private void MIExit_click(object sender, RoutedEventArgs e)
{
if (MessageBox.Show("close?", "", MessageBoxButton.YesNo) == MessageBoxResult.Yes)
Application.Current.Shutdown();
else return;
}
工作正常。
答案 2 :(得分:0)
您是否可能订阅该活动两次?我会首先处理事件,因此它不会冒泡,然后添加一个简单的标记,以便MessageBox
不会被调用两次。
private bool _shuttingDown;
private void MIExit_Click(object sender, RoutedEventArgs e)
{
e.Handled = true;
if (_shuttingDown) return;
_shuttingDown = true;
var close = MessageBox.Show("Do you want to close the programm?", "", MessageBoxButton.YesNo);
if (close == MessageBoxResult.No)
{
_shuttingDown = false;
return;
}
Application.Current.Shutdown();
}