如果在其MDI父级中运行另一个表单,如何从子表单中检查?

时间:2011-12-27 20:35:05

标签: c# winforms mdichild mdiparent

我有一份MDI表格。如果另一个表单正在运行,我想检查此表单的正在运行的子项。类似的东西:

    if (this.MdiParent.MdiChildren.Contains(MyForm2))
    {
        //Do Stuff
    }

其中MyForm2是我要查找的表单的名称(类名)。编译器说“类名在这一点上无效”。

如何正确地做到这一点?请注意,我可以在该momemnt上运行多个“MyForm2”实例(好吧,使用不同的实例名称!)

2 个答案:

答案 0 :(得分:2)

只需创建一个循环来遍历MdiChildren集合,以查看是否存在任何形式的指定Type。包含需要特定实例才能返回有效数据:

        foreach (var form in this.MdiParent.MdiChildren)
        {
            if (form is MyForm2)
            {
                // Do something. 

                // If you only want to see if one instance of the form is running,
                // add a break after doing something.

                // If you want to do something with each instance of the form, 
                // just keep doing something in this loop.
            }
        }

答案 1 :(得分:2)

您需要检查每个孩子的类型。

例如,您可以使用is关键字(more info)来确定孩子的类型是否正确:

if (this.MdiParent.MdiChildren.Any(child => child is MyForm2))
{
}

.Any()方法需要引用System.LinqRead more about Any()