当我点击打开任何其他表单时,关闭mdi父级的表单

时间:2011-03-26 12:24:26

标签: c#

我有一个mdi表单,还有很多与菜单条相关联的其他表单。当我点击任何其他菜单项时,应该在mdi父表单中关闭先前打开的表单。

3 个答案:

答案 0 :(得分:3)

这是一种更简洁,现代和外科的方式来关闭所有MdiChild表格:

static void CloseAllMdiChildForms()
{
    foreach (var form in Application.OpenForms.Cast<Form>().Where(f => f.IsMdiChild).ToArray()) // ToArray necessary to build a snapshot
        form.Close();
}

然而,听起来你想要的是在任何给定时间只打开一个子表单。如果是这种情况,MDI不是正确的工具。您可以构建UserControl并将其交换进主申请表格。

答案 1 :(得分:1)

如果要打开新表单,请调用此方法:

private void CloseAllForms()
{
    Form[] formToClose = null;
    int i = 1;
    foreach (Form form in Application.OpenForms)
    {
        if (form != this) //this is form1
        {
            Array.Resize(ref formToClose, i);
            formToClose[i - 1] = form;
            i++;
        }
    }
    if (formToClose != null)
        for (int j = 0; j < formToClose.Length; j++)
            formToClose[j].Dispose();
}

米蒂亚

答案 2 :(得分:0)

这是最好的一个:

static void CloseAllMdiChildForms()
{
    foreach (var form in Application.OpenForms.Cast<Form>().Where(f => f.IsMdiChild).ToArray()) // The ToArray is necessary to build a snapshot
    form.Close();
}