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程序可以不用对无标题窗口进行排除。
原文链接:C# WinForm和WPF关闭所有子窗口的方法_c# wpf 点击 menuitem 关闭窗体-CSDN博客