求助:WPF中WINDOW模版如何通过程序退出

raynors 2017-12-26 12:54:51
求助 我的问题见 :

https://www.cnblogs.com/Philip-Tell-Truth/p/6130005.html

我遇到了同样的问题,在做WINDOW模版后,我的窗体无法彻底退出。窗体不见了,进程还在。

Philipyexushen 大哥发现了问题的结症,但是似乎又没有完全解决。

每新开一个窗口,系统会自动生成
1 窗体A
2 窗体A AdornerLayer

通过程序CLOSE过程 可以关闭 “窗体A”,但不能关闭 “窗体A AdornerLayer”

Philipyexushen 是通过如下语句获得 “窗体A AdornerLayer” 然后关闭。

windowAdnore = Application.Current.Windows[Application.Current.Windows.Count - 1]
windowAdnore.close();


但我的问题也在这里,如何判断
Application.Current.Windows[Application.Current.Windows.Count - 1] 就是你所在窗体的AdornerLayer呢?

如果我的窗体并不是模态窗体,而是多个窗体使用同样的模版,那么Application.Current.Windows 会排列如下
1 主窗体
2 主窗体 AdornerLayer
3 窗体A
4 窗体A AdornerLayer
5 窗体B
6 窗体B AdornerLayer
7 窗体C
8 窗体C AdornerLayer

那么我用窗体A 去索引 Application.Current.Windows[Application.Current.Windows.Count - 1] 得到的结果是 窗体C AdornerLayer

====================
求助是否存在一个正常的索引办法?亦或者有更好的解决办法?
...全文
468 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
raynors 2018-01-02
  • 打赏
  • 举报
回复
找了很多办法,似乎跟WINFORM不太一样,没有办法。 而且经过仔细核查,情况也并不是最初那样的问题。 AdornerLayer 也只是在debug模式中出现,程序不退出的问题还并不是这个AdornerLayer导致的。 但网络上也没有别的猜测和处理办法了,只有在窗体里面建立线程句柄 之后 再启动线程。 然后 overrides onclosing里面 关掉没退出的线程就可以了。 程序可以正常退出。
exception92 2017-12-29
  • 打赏
  • 举报
回复
窗体不见了,进程还在 -》一个应用程序只对应一个进程,关闭了非主窗体跟进程在不在没有关系,除非你退出整个App ,进程就结束了。
Jonly 2017-12-27
  • 打赏
  • 举报
回复
用 Application.Current.Windows[Application.Current.Windows.Count - 1] 遍历一下, Window.Title.IndexOf("窗体A") 名是否包含有 窗体A, 然后关闭当前对象窗口.
Jonly 2017-12-26
  • 打赏
  • 举报
回复
看看用这句行不行 Environment.Exit(0);
raynors 2017-12-26
  • 打赏
  • 举报
回复
引用 1 楼 Jonly 的回复:
看看用这句行不行 Environment.Exit(0);
我只是要退出窗体,不是要退出程序。

8,734

社区成员

发帖
与我相关
我的任务
社区描述
WPF/Silverlight相关讨论
社区管理员
  • WPF/Silverlight社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧