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

标签 c# wpf windows window

因此,我的许多 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/

相关文章:

.net - 当呈现大量 UI 控件时,如何在 WPF 中获得最佳性能?

c++ - OpenProcessToken 从本地系统服务失败并出现 ERROR_ACCESS_DENIED

C++/WIndows - 无法捕获异常

php - 缺少 mysqli 扩展。请检查您的 PHP 配置,Windows 7

c# - 双向 http 流式传输

c# - Entity Framework - 带排序依据和分组依据的 Linq 查询

c# - 捕获异常,添加数据,然后重新抛出

c# - 在包含两个图像的 Canvas 上更改 UIElement.CaptureMouse() 的调用顺序时,我得到不同的结果

c# - 设置Listbox的滚动条位置

c# - 将数据从 jQuery POST/GET 到 MVC 4 Controller 并返回 View 的最佳方法