
C# 关闭多个相同窗口
有父窗口from,子窗口form1,form2,form3.....和窗口form_a,form_b,form_c......现在通过父窗口打开多个form1和form2...
有父窗口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["Client_1"].Dispose();}}用这个来关闭,如果只开了3个form_a的话就可以全部关闭,但如果我是开了4个以上的form_a就关闭不了,每次都剩下一两个......请问怎么回事?有没有其他办法实现?
展开
2013-11-16
展开全部
因为没关闭一个, OpenForms会减少一个窗体,索引位置和总数就会改变
应该是这样:
if (Application.OpenForms[si].Name == "form_a")
{
Application.OpenForms[si].Close();
si--;
}
应该是这样:
if (Application.OpenForms[si].Name == "form_a")
{
Application.OpenForms[si].Close();
si--;
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-11-16
展开全部
好吧 我想知道 你是不是就是想关闭所有程序? Application.Exit();可以关闭应用程序,不管你有几个窗口 这样不用调用close方法了,不知道你循环Dispose有何意义?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-11-16
展开全部
用数组(或泛型)存下打开的窗口实例,然后在关闭时循环关闭就行了啊,释放实例,有问题吗?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询