如何识别WPF中的Button或标题栏的Close按钮单击引发Window_Close事件?

时间:2018-11-08 14:11:11

标签: wpf

我有3种WPF形式,即MainWindow,SettingWindow和FinalWindow。单击按钮时,我要在SettingWindow中有一个FinalButton,我想克隆当前的SettingWindows并要打开FinalWindow。同样,当我单击标题栏中的“关闭”按钮时,我想关闭当前窗体并打开MainWindow。但是我一直面临一个问题,问题是当我单击标题栏中的“关闭”按钮或单击“ ButtonFinal”时,在两种情况下都打开了MainWindow,为避免这种情况,我必须在关闭事件中放置一个条件才能知道哪个按钮引发了该事件。我没有得到该问题的实际解决方案。您能帮我解决问题吗?

private void ButtonFinal_Click(object o, RoutedEventArgs e)
{
    FinalWindow finalWindow = new FinalWindow();
    finalWindow.Show();
    this.Close();
}

private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
    MainWindow mainWindow = new MainWindow();
    mainWindow.Show();
}

1 个答案:

答案 0 :(得分:1)

您可以在ButtonFinal_Click事件处理程序中设置一个标志,并在Closing事件处理程序中检查该标志,例如:

private bool _closedByButton;
private void ButtonFinal_Click(object o, RoutedEventArgs e)
{
    FinalWindow finalWindow = new FinalWindow();
    finalWindow.Show();
    _closedByButton = true;
    this.Close();
    _closedByButton = false;
}

private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
    if (_closedByButton)
    {
        //...
    }
}