最小化所有形式的类

时间:2013-08-31 16:34:26

标签: c# winforms class

我如何将其转换为最小化所有子形式的类?当我尝试将它转移到课堂时,我得到了错误:

  

找不到类型或命名空间名称“MdiChildren”(您是否缺少using指令或程序集引用?)

public void minimizeAll()
{
   foreach (Form childForm in MdiChildren)
   {
      childForm.WindowState = FormWindowState.Minimized;
   }
}

4 个答案:

答案 0 :(得分:2)

由于您已将代码移至新类,因此以前链接到this. MDIChildren对象的Windows属性的隐式Form引用不再可用你需要传递并接受新课程中的Form对象,如下所示:

public class NewClass
{
    public void minimizeAll(System.Windows.Forms.Form yourForm)
    {
        if(yourForm == null) throw new InvalidArgumentException();

        foreach (Form childForm in yourForm.MdiChildren)
        {
           childForm.WindowState = FormWindowState.Minimized;
        }
    }
}

答案 1 :(得分:2)

MdiChildren不是静态属性,您需要使用表单的实例。您可以将表单作为参数传递。

public void minimizeAll(Form parentForm)
{
   foreach (Form childForm in parentForm.MdiChildren)
   {
      childForm.WindowState = FormWindowState.Minimized;
   }
}

答案 2 :(得分:2)

您可以尝试使用类似的东西(几乎没有许多 MDI父表单):

public static class Minimizer {
  public static void MinimizeMdiChildren() {
    // Enumerate all forms, minimize MDI Children
    foreach (Form form in Application.OpenForms) 
      if (form.IsMdiChild)
        form.WindowState = FormWindowState.Minimized;
  }
}
...
Minimizer.MinimizeMdiChildren();

答案 3 :(得分:0)

您需要做的是使用其他指令在顶部添加using MdiChildren;,并添加MdiChildren命名空间作为参考。

要在Visual Studio中添加引用,请右键单击项目名称,在应用程序右侧的项目浏览器中,然后向下滚动弹出菜单,直到找到“添加引用”。从这里选择要在项目中引用的命名空间,然后单击“确定”。

从此处ForEach只需输入之前有MdiChildren的类路径。像MdiChildren.TheClass

这样的东西