gpt4 book ai didi

wpf - 关闭子窗口最小化父窗口

转载 作者:行者123 更新时间:2023-12-02 02:56:52 24 4
gpt4 key购买 nike

以下代码演示了我遇到的一个问题,即关闭子窗口会最小化父窗口,这是我不希望发生的情况。

    class SomeDialog : Window
{
protected override void OnMouseDoubleClick(MouseButtonEventArgs e)
{
base.OnMouseDoubleClick(e);
new CustomMessageBox().ShowDialog();
}
}

class CustomMessageBox : Window
{
public CustomMessageBox()
{
Owner = Application.Current.MainWindow;
}
}

public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
}

protected override void OnMouseDoubleClick(MouseButtonEventArgs e)
{
base.OnMouseDoubleClick(e);
new SomeDialog() { Owner = this }.Show();
}
}

Window1 是主应用程序窗口。

SomeDialog 是一个在 Window1 中发生某些事件时弹出的窗口(在示例中双击 window1),该窗口需要无模式

CustomMessageBox 是一个在“SomeDialog”(在示例中双击 SomeDialog)中的某些事件时弹出的窗口,该窗口需要模态

如果您运行该应用程序,然后双击 Window1 的内容以调出 SomeDialog,然后双击 SomeDialog 的内容以调出 CustomMessagebox。

现在您关闭 CustomMessagebox。很好。

现在如果关闭 SomeDialog,Window1 会最小化吗?为什么它会最小化?我该如何阻止它?

编辑:看起来解决方法相当简单,使用 Viv 建议的技术。

class SomeDialog : Window
{
protected override void OnMouseDoubleClick(MouseButtonEventArgs e)
{
base.OnMouseDoubleClick(e);
new CustomMessageBox().ShowDialog();
}

protected override void OnClosing(System.ComponentModel.CancelEventArgs e)
{
base.OnClosing(e);
Owner = null;
}
}

最佳答案

Why is it minimizing and how can I stop it?

不确定“为什么”,也许您可​​以将其报告为错误,并查看他们的回复内容,就像您不希望发生这种情况的非模式对话框一样。

至于解决方法,请尝试以下操作:

public partial class MainWindow : Window {
...

protected override void OnMouseDoubleClick(MouseButtonEventArgs e) {
base.OnMouseDoubleClick(e);
var x = new SomeDialog { Owner = this };
x.Closing += (sender, args) => {
var window = sender as Window;
if (window != null)
window.Owner = null;
};
x.Show();
}
}

^^ 这应该可以防止 MainWindow(父窗口)在 SomeDialog 关闭时最小化。

关于wpf - 关闭子窗口最小化父窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19156373/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com