微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐