日期:2014-05-17  浏览次数:20828 次

C# 关闭多个相同子窗口
有父窗口from,子窗口form1,form2,form3.....和窗口form_a,form_b,form_c......
现在通过父窗口打开多个form1和form2....子窗口后,每个子窗口再打开多个form_a,form_b...
例如:form1,打开了4个form_a.我想一次性全部关闭form1对应的所有form_a,

我用: List<form_a> list = new List<form_a>();    //检测并关闭
for (int si = 0; si < Application.OpenForms.Count; si++)
{
if (Application.OpenForms[si].Name == "form_a")
{
//Application.OpenForms[si].Close(); 
 Application.OpenForms["form_a"].Dispose(); 

}
用这个来关闭,如果只开了3个form_a的话就可以全部关闭,但如果我是开了4个以上的form_a就关闭不了,每次都剩下一两个......请问怎么回事?有没有其他办法实现?
------最佳解决方案--------------------
for循环的时候 Application.OpenForms变化了,你只能关掉前面几个,这样就可以了:

for (int si = Application.OpenForms.Count-1; si >=0 ; si--)
 {
 if (Application.OpenForms[si].Name == "form_a")
 {
Application.OpenForms[si].Close(); 
//  Application.OpenForms["form_a"].Dispose(); 
 } 
 }
------其他解决方案--------------------
太谢谢你了,终于可以了