首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >C# WPF如何关闭通过父窗口打开的所有子窗口

C# WPF如何关闭通过父窗口打开的所有子窗口

作者头像
zls365
发布于 2021-04-02 00:53:15
发布于 2021-04-02 00:53:15
6.6K0
举报
文章被收录于专栏:CSharp编程大全CSharp编程大全
代码语言:javascript
复制
foreach (Window item in Application.Current.Windows)
{
    if (item.Title == "") continue; // 跳过无标题窗口 
    if (item.Title != "父窗口标题") item.Close();
}

WinForm时这样操作的:

代码语言:javascript
复制
// 遍历并关闭所有子窗口
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.Title) childCollection[i].Close();
}

WPF中时这样操作的:

代码语言:javascript
复制
// 遍历并关闭所有子窗口
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程序可以不用对无标题窗口进行排除。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-03-31,如有侵权请联系 cloudcommunity@tencent.com 删除
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档