WPF 解决弹出模态窗口关闭后,主窗口不在最前

本文告诉大家如何解决这个问题,在 WPF 的软件,弹出一个模态窗口。使用另一个窗口在模态窗口前面。从任务栏打开模态窗口。关闭模态窗口。这时发现,主窗口会在刚才使用的另一个窗口下面。

这是 Windows 的bug ,不过从上面的描述,也许大家还不知道这个问题是什么。不过我把他放在 github ,所以大家可以看到这个问题具体是什么。

可以运行代码:wpf-issues/ChildWindows

在上面的网站有详细的视频告诉大家是如何做的就可以看到这个问题。

因为模态窗口会在关闭的时候,让主窗口不在最前,所以团队不敢使用模态窗口。

但是这个问题在看了 Windows 历史之后,才发现这个问题是 Windows 的问题。在窗口关闭的时候,Windows 会找一个在这个窗口下方的第一个可用的窗口,激活他。因为弹出模态窗口的主窗口是被禁用的。所以在模态窗口关闭的时候,就忽略了主窗口可以激活,于是找到主窗口下方的一个可以被激活的窗口,这时激活他,于是这个被找到的窗口就在主窗口的上面。

那么这个问题可以如何解决?实际上只需要在模态窗口关闭之前,激活主窗口就可以。请看下面的代码

     private void ButtonBase_OnClick(object sender, RoutedEventArgs e)
        {
            var w = new Window
            {
                Title = "ChildWindow",
                Owner = this,
                Width = 600,
                Height = 500,
                Content = "Step 1: Move a window of another appliation to over the MainWindow\r\n" +
                          "Step 2: Active this window from the Windows taskbar\r\n" +
                          "Step 3: Close this window (ChildWindow)\r\n" +
                          "\r\nNow you can see that the MainWindow drops down and coverd by another window.\r\n" +
                          "If you don't understand the description above, please refer to the video demo in this project."
            };
            w.Closing += W_Closed;
            w.Show();
        }

        private void W_Closed(object sender, CancelEventArgs e)
        {
            Activate();
        }

解决的项目我传到 CSDN,可以直接运行。

参见 关闭模态窗口后,父窗口居然跑到了其他窗口的后面


本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏lgp20151222

bootstrap的模态框

12410
来自专栏DannyHoo的专栏

iOS开发中QQ好友列表下拉显示全部好友实现思路

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010105969/article/details/...

49420
来自专栏Python绿色通道

Python数据可视化分析(一)

个人前面也说了强烈建议使用Pycharm作为Python初学者的首选IDE,主要还是因为其强大的插件功能,很多环境都能一键安装完成,像本文的matplotlib...

28250
来自专栏听雨堂

Flash背景透明的代码

      我觉得这个应该不是太难,结果DW中死活设置不成功,网上搜索到的都是一些互相抄了抄去的不知所云的东西,懒得去学习研究,还不如在自己原来做过的网站中找代...

21260
来自专栏君赏技术博客

原生支付 SDK 技术回顾

14030
来自专栏编程坑太多

jQuery对表格的操作示例

18020
来自专栏DeveWork

WordPress在RSS Feed 中输出自定义特色图像(缩略图)

估计不少网友是在了解到Google Reader 关闭的消息后才知道RSS这种东西的,本站DeveWork. com 曾经有过《WordPress在RSS Fe...

270100
来自专栏张善友的专栏

在Expression Blend中使用XAML建立3D应用程序

参考微软<Creating 3D Content with WPF>文档翻译。 源文件下载http://www.wangpangzi.net/uploads/2...

21090
来自专栏orientlu

python 数据图表呈现

平时压力测试,生成一些数据后分析,直接看 log 不是很直观,前段时间看到公司同事分享了一个绘制图表python 模块 : plotly, 觉得很实用,利用周...

23520
来自专栏编程语言

Python:pygame.image.load

28620

扫码关注云+社区

领取腾讯云代金券