首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

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

你会发现,模态窗口关闭后,父窗口并没有回到当前顶层显示中。取而代之,是其他程序窗口(比如 Windows 资源管理器窗口)。...然后,回到模态窗口中,把它关掉: ? 我们期待模态窗口关掉后,它窗口会在顶层继续供我们操作,但实际上,Windows 资源管理器却成为了顶层,我们程序“掉下去了”: ?...为解决兼容性问题微软工程师默哀一分钟…… 我曾经尝试在模态窗口关闭后激活一下父窗口,但这样会导致窗口层级闪烁一下(Windows 资源管理器会短暂地显示到我们窗口之上)。...而这本书作者推荐方法是: 重新激活所有者窗口 销毁模态对话框 于是,我试着监听模态窗口 Closing 事件,在其中写下主窗口激活调用,自此 BUG 才算解决。...或者统一模态窗口窗口样式,在样式中解决这个 BUG,这样,所有使用了此窗口样式模态窗口也将解决问题。

9.3K20

怎么实现关闭窗口

思路:在java源文件中查找源代码 首先,我们知道JFrame.setDefaultCloseOperation(int operation)中提供了四种方式去实现关闭窗口 JFrame在包javax.Swing...WindowConstans(窗口常量)是在包Javax.Swing中接口 然而窗口即使不注册指定监视器也可以最大化最小化,所以推测,当初始化窗口时候,窗口会默认注册监视器 从上面看出,下面要去找...null; fire(common, event); fire(named, event); } } //实际在监听器中改变事件..., 然后我就不知道怎么查了 其实从那四个参数意思上面看也能看出个大概 答案 DO_NOTHING_ON_CLOSE:什么都不做,那我就根本不用实现关闭按钮了 HIDE_ON_CLOSE:隐藏窗口...,那我把窗口设为invisible就可以啦 DISPOSE_ON_CLOSE:退出时释放窗口,那就把窗口对象清理掉就行拉 EXIT_ON_CLOSE:这个肯定是直接退出程序啦

4.1K70

使用 SetParent 制作父子窗口时候,如何设置窗口窗口样式以避免抢走父窗口焦点

不过,对于 WPF 程序来说,一个独立窗口实际上只有一个窗口句柄,窗口所有内容都是 WPF 绘制。...注意看下面的窗口标题栏,当我在这些不同区域间点击时候,窗口标题栏在黑色和灰色之间切换: 这说明当窗口获得焦点时候,父窗口会失去焦点并显示失去焦点样式。...你可以在这篇博客中找到一个简单例子: 解决办法 而原因和解决方法仅有一个,就是窗口需要有一个窗口样式。 具体来说,窗口必须要有 WS_CHILD 样式。...你可以看看 Spyxx.exe 抓出来默认普通窗口窗口样式差别: !...[默认普通窗口]](/static/posts/2019-09-19-10-21-31.png) ▲ 默认普通窗口窗口 ---- 参考资料 关于WS_CLIPCHILDREN和WS_CLIPSIBLINGS

38360

【记录】使用python图形库打开新窗口时候关闭之前窗口,运行结束后关闭当前窗口和程序

代码图片展示 代码展示 import subprocess import sys # 导入sys模块 def open_buy_quantity(): # 运行购买数量.py文件 # 关闭当前窗口...Tkinter 库和 subprocess 模块来实现在 tkinter 窗口中打开另一个 Python 脚本过程,并在脚本运行结束后关闭当前窗口和程序。...在你代码中,你使用了 Tkinter 创建了一个名为 window 窗口,并在 open_buy_quantity 函数中调用了 window.destroy() 方法来关闭当前窗口。...这是一个简单 GUI 应用示例,展示了如何创建窗口关闭窗口。 subprocess 模块: subprocess 模块允许你在 Python 程序中启动新进程。...在你代码中,你使用了 subprocess.run(["python", "D:/桌面/python项目/购买数量.py"]) 来运行名为 "购买数量.py" Python 脚本。

12710

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

本文告诉大家如何解决这个问题,在 WPF 软件,弹出一个模态窗口。使用另一个窗口在模态窗口前面。从任务栏打开模态窗口关闭模态窗口。这时发现,主窗口会在刚才使用另一个窗口下面。...因为模态窗口会在关闭时候,让主窗口不在最前,所以团队不敢使用模态窗口。 但是这个问题在看了 Windows 历史之后,才发现这个问题是 Windows 问题。...在窗口关闭时候,Windows 会找一个在这个窗口下方第一个可用窗口,激活他。因为弹出模态窗口窗口是被禁用。...所以在模态窗口关闭时候,就忽略了主窗口可以激活,于是找到主窗口下方一个可以被激活窗口,这时激活他,于是这个被找到窗口就在主窗口上面。 那么这个问题可以如何解决?...参见 关闭模态窗口后,父窗口居然跑到了其他窗口后面 ----

14.7K20

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

本文告诉大家如何解决这个问题,在 WPF 软件,弹出一个模态窗口。使用另一个窗口在模态窗口前面。从任务栏打开模态窗口关闭模态窗口。这时发现,主窗口会在刚才使用另一个窗口下面。...因为模态窗口会在关闭时候,让主窗口不在最前,所以团队不敢使用模态窗口。 但是这个问题在看了 Windows 历史之后,才发现这个问题是 Windows 问题。...在窗口关闭时候,Windows 会找一个在这个窗口下方第一个可用窗口,激活他。因为弹出模态窗口窗口是被禁用。...所以在模态窗口关闭时候,就忽略了主窗口可以激活,于是找到主窗口下方一个可以被激活窗口,这时激活他,于是这个被找到窗口就在主窗口上面。 那么这个问题可以如何解决?...参见 关闭模态窗口后,父窗口居然跑到了其他窗口后面

5.2K30

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

本文告诉大家如何解决这个问题,在 WPF 软件,弹出一个模态窗口。使用另一个窗口在模态窗口前面。从任务栏打开模态窗口关闭模态窗口。这时发现,主窗口会在刚才使用另一个窗口下面。...因为模态窗口会在关闭时候,让主窗口不在最前,所以团队不敢使用模态窗口。 但是这个问题在看了 Windows 历史之后,才发现这个问题是 Windows 问题。...在窗口关闭时候,Windows 会找一个在这个窗口下方第一个可用窗口,激活他。因为弹出模态窗口窗口是被禁用。...所以在模态窗口关闭时候,就忽略了主窗口可以激活,于是找到主窗口下方一个可以被激活窗口,这时激活他,于是这个被找到窗口就在主窗口上面。 那么这个问题可以如何解决?...参见 关闭模态窗口后,父窗口居然跑到了其他窗口后面

5.7K10

WPF 已知问题 全屏透明窗口弹出窗口会闪烁

WindowStyle 为 None 以及 WindowState 为 Maximized 进入全屏,同时设置 AllowsTransparency 支持透明,此时弹出一个设置 WindowStyle 是 None 窗口...,用 VisualStudio 2019 运行将会看到 窗口 先显示出来,然后回到主窗口下面,然后再显示到主窗口上面 其实此问题我没有复现 此问题步骤十分简单,但是有要求是在 VisualStudio...,先显示了窗口然后窗口到主窗口下方,等一下又回到主窗口上方。...也就是窗口显示一下然后不显示,可以看到出现闪烁 注意,此时如果没有在 VisualStudio 2019 附加调试,那么不会看到窗口闪烁 解决方法有两个 第一个方法是去掉主窗口 AllowsTransparency...属性 第二个方法是设置窗口 Owner 为主窗口 private void Button_OnClick(object sender, RoutedEventArgs e)

4K10

WPF 获取全局所有窗口创建显示事件 监控窗口打开

这是一个开发时辅助机制,用来让开发者不要随便弹出窗口,我又好奇这个监控模块是如何监控到我弹出一个窗口,学习了监控模块机制,就写了这个博客 在 WPF 里面,可以通过 EventManager 监听全局路由事件...,刚好窗口创建显示时,将会触发一些路径事件。...于是就可以进行监控窗口创建显示 监听窗口 SizeChangedEvent 路由事件是比较靠谱方式,这个有一点点违反开发者想法,开发者默认想是使用 LoadedEvent 事件。...e) { // 所有窗口都会触发 } 窗口创建时候,将会进入 Window_SizeChanged 事件。...也可以在事件里面对每个窗口注入一些有趣逻辑,或者是监听窗口各个事件,输出更多日志,让开发者可以通过日志了解到当前有哪些窗口依然还在显示 这是另一位大佬写代码,请看 https://gist.github.com

2K50
领券