关闭'开关板'以外的所有表格

时间:2013-11-05 13:37:43

标签: c# winforms linq

我需要能够关闭一个表格并让它关闭除开关板之外的所有其他形式。我尝试使用这个代码,但它也关闭了frmSwitch,即使我试图编码它来关闭除了那之外的所有代码。我哪里做错了?我应该使用表格的实际名称正确吗?

Form[] forms = Application.OpenForms.Cast<Form>().ToArray();
foreach (Form thisForm in forms)
    {
        if (thisForm.Name != "frmSwitch") thisForm.Close();
    }

2 个答案:

答案 0 :(得分:1)

您需要检查是否thisForm is frmSwitch,然后关闭其余部分。

foreach (Form thisForm in Application.OpenForms)
{
    if (!(thisForm is frmSwitch))
        thisForm.Close();
}

您也不必使用Cast<Form>ToArray,您可以枚举FormCollection

答案 1 :(得分:0)

假设您从“主表单”

结束,这将有效
var list = Application.OpenForms.Cast<Form>().ToArray();
foreach (Form item in list)
{
    if (item.Equals(this)) continue;
    item.Close();
}