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