类以最小化所有形式

本文关键字:最小化 | 更新日期: 2023-09-27 18:29:41

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

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

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

类以最小化所有形式

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

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

您可以尝试使用类似的东西(几乎没有许多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();

因为您已经将代码移动到新的类,以前链接到Windows Form对象的MDIChildren属性中的隐式this.引用不再可用,您需要在新类中传递并接受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;
        }
    }
}

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

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

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