循环遍历所有 MDI 子窗体并关闭除当前窗体之外的所有其他窗体

2023-12-28

我正在使用 C# 开发 winforms 应用程序。我有一个 MDI 容器,左侧有一个菜单,按下按钮即可看到相应的表单。如果我单击打开 Form1 的按钮 3 次,则会打开该表单的 6 个实例。因此我认为我必须编写一个方法来处理任何其他 Form1 实例。使用以下方法,我循环遍历 MDI 子项,但我需要一些帮助来关闭除新实例之外的所有其他实例。

  public void DisposeAllButThis(Form form)
    {
        foreach (Form frm in this.MdiChildren)
        {
            if (frm == form)
            {
                frm.Dispose();
                return;
            }
        }
    }

您还需要检查表单是否是同一类型:

public void DisposeAllButThis(Form form)
{
    foreach (Form frm in this.MdiChildren)
    {
        if (frm.GetType() == form.GetType() 
            && frm != form)
        {
            frm.Dispose();
            frm.Close();
        }
    }
}

有关关闭和处置的更多信息,请参阅:C# Form.Close 与 Form.Dispose https://stackoverflow.com/questions/3097364/c-sharp-form-close-vs-form-dispose

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

循环遍历所有 MDI 子窗体并关闭除当前窗体之外的所有其他窗体 的相关文章

随机推荐