3

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

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

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

4 回答 4

2

由于您已将代码移至新类,因此先前链接到您的对象this.的属性的隐式引用不再可用,您需要在新类中传递并接受该对象,如下所示:MDIChildrenWindows FormForm

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;
        }
    }
}
于 2013-08-31T16:50:23.250 回答
2

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

public void minimizeAll(Form parentForm)
{
   foreach (Form childForm in parentForm.MdiChildren)
   {
      childForm.WindowState = FormWindowState.Minimized;
   }
}
于 2013-08-31T16:50:36.727 回答
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();
于 2013-08-31T16:53:37.643 回答
0

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

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

从这里ForEach只需键入您MdiChildren之前的类路径即可。就像是MdiChildren.TheClass

于 2013-08-31T16:44:02.567 回答