C# 类以最小化所有窗体

C# 类以最小化所有窗体,c#,winforms,class,C#,Winforms,Class,如何将其转换为最小化所有子窗体的类?当我尝试将其转移到类中时,我得到错误: 找不到类型或命名空间名称“MdiChildren”(是否缺少using指令或程序集引用?) 您需要做的是使用MdiChildren添加,并添加MdiChildren命名空间作为引用 要在Visual Studio中添加引用,请右键单击应用程序右侧的项目资源管理器上的项目名称,然后向下滚动弹出菜单,直到到达“添加引用”。从这里选择要在项目中引用的名称空间,然后单击“确定” 从这里开始,在ForEach中,只需键入您以前拥有

如何将其转换为最小化所有子窗体的类?当我尝试将其转移到类中时,我得到错误:

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


您需要做的是使用MdiChildren添加
,并添加
MdiChildren
命名空间作为引用

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


从这里开始,在
ForEach
中,只需键入您以前拥有
MdiChildren
的类路径。类似于
MdiChildren.TheClass

的内容,因为您已将代码移动到新类,以前链接到您的
Windows
窗体
对象的
MDIChildren
属性中的隐式
this.
引用不再可用,您需要在新类中传递和接受
窗体
对象,如下所示:

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;
        }
    }
}

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

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

您可以尝试使用类似的方式(几乎没有多少MDI父窗体):


这没用
MdiChildren
不是名称空间,它是。我以为
MdiChildren
是一个类?它是类
表单
所具有的属性。如果它是一个类,就不可能执行
foreach(MdiChildren中的formchildform)
。不过,您在查看
时使用了与发布的错误OP相关的
语句,这是正确的。通常这是原因,但在本例中不是:)我认为MdiChildren驻留在类库中,OP需要访问MdiChildren类中的属性。
public void minimizeAll(Form parentForm)
{
   foreach (Form childForm in parentForm.MdiChildren)
   {
      childForm.WindowState = FormWindowState.Minimized;
   }
}
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();