关闭所有表单,除了我的主表单

本文关键字:表单 我的 | 更新日期: 2023-09-27 18:17:29

我使用WinForms。我想关闭所有的表单,除了我的主表单Form1。我注意到我的主要形式是索引0,所以我想知道我是否可以做一些事情,关闭所有的形式,除了索引0。我该怎么做呢?这是我目前掌握的信息。

 List<Form> openForms = new List<Form>();
  foreach (Form f in Application.OpenForms)
  {
        openForms.Add(f);
        int mainFormIndex = openForms.IndexOf(0);
        Console.WriteLine(": " + mainFormIndex);

        if(mainFormIndex != 0)
        {
           this.Owner.Close();
           }
           else
           {
             this.Close();
           }
        }
  }

关闭所有表单,除了我的主表单

您可以使用linq关闭除Form1实例外的所有表单:

Application.OpenForms.Cast<Form>().Where(x => !(x is Form1))
           .ToList().ForEach(x => x.Close());

您可以检查表单的名称,然后关闭,例如,如果您需要保持Form1打开并关闭所有其他表单;

for (int i = Application.OpenForms.Count - 1; i >= 0; i--)
{
    if (Application.OpenForms[i].Name != "Form1")
    {
        Application.OpenForms[i].Close();
    }
}