【问题标题】:Minimizing Window after MessageBoxMessageBox 后最小化窗口
【发布时间】:2022-01-18 21:08:21
【问题描述】:

我正在使用 Visual Studio 2022 和 .NET 6.0 开发一个小应用程序

我有一个 MainWindow 并附加了一个从属窗口,如下所示:

private void s_Betrieb_Click(object sender, RoutedEventArgs e)
{
    BetriebWindow betriebWindow = new();
    betriebWindow.Owner=this;
    betriebWindow.Show();
}

从属窗口 BetriebWindow 是一个普通的窗口,在 XAML 中定义,显示一个输入表单(使用文本框和标签)。

更改某些输入后,用户单击“关闭”(窗口右上边缘的红色 x)。我问用户是否愿意使用 MessageBox.Show() 保存他的更改。

private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
    {
        if (MessageBox.Show("Wollen Sie Ihre ",...) == MessageBoxResult.OK)
            SaveData();
        Close();
    }

从属窗口关闭后,MainWindow 将自身最小化并出现在任务栏中,这是我(甚至未来的用户)不喜欢的。

我做错了什么?我希望 MainWindow 在屏幕上保持打开状态。 但是关闭 MainWindow 也应该关闭从属窗口。

感谢您的回答!

保罗

【问题讨论】:

    标签: c# wpf


    【解决方案1】:

    删除Closing处理程序中对Close()的调用,并在子窗口关闭时在主窗口上调用Activate()

    private void s_Betrieb_Click(object sender, RoutedEventArgs e)
    {
        BetriebWindow betriebWindow = new();
        betriebWindow.Owner = this;
        betriebWindow.Closed += (ss, ee) => Activate();
        betriebWindow.Show();
    }
    

    private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
    {
        if (MessageBox.Show("Wollen Sie Ihre ", ...) == MessageBoxResult.OK)
            SaveData();
    }
    

    【讨论】:

    • 非常感谢!它有效!
    • @Paulus:不客气。请accept回答。
    猜你喜欢
    • 1970-01-01
    • 2012-03-21
    • 2011-05-27
    • 1970-01-01
    • 1970-01-01
    • 2019-08-12
    • 1970-01-01
    • 1970-01-01
    • 2013-10-09
    相关资源
    最近更新 更多