因此,我的许多 WPF 应用程序都遇到了一个问题,即在关闭一个窗口的子窗口后,该窗口(通常是我的主窗口)将进入后台,在我打开的任何其他窗口之后。经过一番研究,我发现提交给 Microsoft 的错误报告:Bug Report以及他们通常的回应“WPF 团队最近审查了这个问题,不会解决它......”
有没有人成功地独自解决了这个问题?这让我抓狂,我想不出解决办法。
编辑:
我对 James 在他的回答中提出的建议进行了一些思考,并且由于窗口位于其他所有内容之上的不便性而几乎驳回了他的建议之后,我想出了这个:
ChildWindow.Closed += delegate
{
ChildWindow = null;
this.Topmost = true;
System.Threading.Thread.Sleep(1000);
this.Topmost = false;
};
因此,当引发 child 的 Closed()
事件时,我确保父窗口位于最顶层。然后,我让线程休眠 1 秒并将 topmost 设置为 false 以允许其他窗口覆盖此父窗口。
暂停的原因:如果我不使用暂停,只是 this.Topmost = true
后跟 this.Topmost = false
,那么效果永远不会发生,并且由于错误的时机,错误仍然会出现。
我不确定这是否是最好的方法,但它确实有效。微软需要在 WPF 上投入更多的资源。
最佳答案
将主窗口设置为:
Topmost=true
这应该有一点帮助,但不能完全解决问题。请记住,如果另一个应用程序具有该设置,则无论如何它们最终都可能位于该应用程序之上。如果这有帮助,请告诉我。
关于c# - 如何防止子窗口关闭后父窗口进入后台?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21845486/