C# WinForm和WPF关闭所有子窗口的方法

WinForm中操作:

复制代码
// 遍历并关闭所有子窗口
FormCollection childCollection = Application.OpenForms;
for (int i = childCollection.Count; i-- > 0;)
{
    if (childCollection[i].Name != "父窗口标题") 
childCollection[i].Close(); }
// 或者也可以这样写: FormCollection childCollection = Application.OpenForms; for (int i = childCollection.Count; i-- > 0;) { if (childCollection[i].Name != this.Text)
childCollection[i].Close(); }
复制代码

 

WPF中操作:

复制代码
// 遍历并关闭所有子窗口
Window[] childArray = Application.Current.Windows.Cast<Window>().ToArray();
for (int i = childArray.Length; i-- > 0;)
{
    Window item = childArray[i];
    if (item.Title == "") continue; // 忽略无标题窗口
    if (item.Title != "父窗口标题") 
item.Close(); }
// 或者也可以这样写: Window[] childArray = Application.Current.Windows.Cast<Window>().ToArray(); for (int i = childArray.Length; i-- > 0;) { Window item = childArray[i]; if (item.Title == "")
continue; // 忽略无标题窗口 if (item.Title != this.Title)
item.Close(); }
复制代码

 

总结, 注意WPF中调试要排除无标题窗口,否则会导致程序被关闭。
这里的无标题窗口是WPF的界面调试器,如果它被关闭会导致被调试的程序也被关闭,Release程序可以不用对无标题窗口进行排除。

 

原文链接:https://blog.csdn.net/ymh441915964/article/details/78997725

posted @   龙骑科技  阅读(62)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· 地球OL攻略 —— 某应届生求职总结
历史上的今天:
2016-05-21 存储过程系列之调试存储过程 SQL Server 2005
2016-05-21 存储过程系列之存储过程返回值总结
2016-05-21 存储过程系列之存储过程具体操作过程及sql数据库调用
2016-05-21 存储过程系列之存储过程sql数据库调用和程序代码调用
2015-05-21 Delegate、Predicate、Action和Func
点击右上角即可分享
微信分享提示