c# – 如何防止子窗口关闭后父窗口进入后台?

所以,我遇到了许多WPF应用程序的问题,在关闭窗口的儿童窗口之后,那个窗口(通常是我的主窗口)将进入后台,在我打开的任何其他东西后面.经过一些研究,我发现这个提交给微软的错误报告:Bug Report以及他们通常的回应“WPF团队最近审查了这个问题,并且不会解决它…”

有没有人成功地自己解决这个问题?它让我发疯,我无法找到解决方案.

编辑:

我考虑了詹姆斯在他的回答中所推荐的内容,并且在几乎解雇了他的建议之后,由于窗户的不便之处在于其他一切,我想出了这个:

ChildWindow.Closed += delegate
{
    ChildWindow = null;
    this.Topmost = true;
    System.Threading.Thread.Sleep(1000);
    this.Topmost = false;
};

因此,当引发child的Closed()事件时,我确保父窗口是最顶层的.然后,我让线程休眠1秒钟并将topmost设置为false以允许其他窗口覆盖此父窗口.

暂停的原因:如果我没有使用暂停而只是这个.Topmost = true后跟this.Topmost = false,那么效果永远不会发生,并且由于bug的时间安排,bug仍然会发生.

我不确定这是否是最好的方式,但它确实有效. Microsoft需要在WPF中投入更多资源.

解决方法:

将主窗口设置为:

Topmost=true

这应该有所帮助,但不会完全解决问题.请记住,如果另一个应用程序具有该设置,则无论如何它们最终都会在应用程序之上.如果这有帮助,请告诉我.

相关文章

Windows2012R2备用域控搭建 前置操作 域控主域控的主dns:自...
主域控角色迁移和夺取(转载) 转载自:http://yupeizhi.blo...
Windows2012R2 NTP时间同步 Windows2012R2里没有了internet时...
Windows注册表操作基础代码 Windows下对注册表进行操作使用的...
黑客常用WinAPI函数整理之前的博客写了很多关于Windows编程的...
一个简单的Windows Socket可复用框架说起网络编程,无非是建...