在运行时通过循环列表通过MDI创建级联窗体



我有一个列表,我使用foreach循环来创建表单。我正试图把表格层叠起来。我一直在尝试使用MDI容器,并在满足条件时设置父窗体。我想知道是否子MDI窗体只能在父窗体内创建,而不能通过循环创建。

E.g

List<string> FormNames;
FormNames.add("Cat Group");
FormNames.add("Big Cats")
FormNames.add("Medium Cats")
FormNames.add("Small Cats")
Foreach(string Name in FormNames)
{
FormA NewForm = new FormA(Name);

if(NewForm.Name == "Cat Group") <--- This sets the ParentForm if conditions are met.
{
NewForm.IsMdiContainer = true; 
NewForm.Layout(MdiLayout.Cascade);
}
else
{
NewForm.IsMdiContainer = false;
NewForm.MDIParent = <-----(what do I put here? I can't put NewForm or else it would reference itself. 
}

NewForm.Show(); 



您只需要Form的另一个变量的帮助。在构建MDIContainer时将此变量设置为NewForm的引用,然后在创建MdiChilds 时使用它

List<string> FormNames = new List<string>();
FormNames.Add("Cat Group");
FormNames.Add("Big Cats");
FormNames.Add("Medium Cats");
FormNames.Add("Small Cats");
Form parent = null;
foreach (string Name in FormNames)
{
Form NewForm = new Form();
NewForm.Name = Name;
if (NewForm.Name == "Cat Group") 
{
NewForm.IsMdiContainer = true;
parent = NewForm;
parent.LayoutMdi(MdiLayout.Cascade);
}
else
{
NewForm.IsMdiContainer = false;
NewForm.MdiParent = parent;
NewForm.Show();
}
}
parent.Show();

最新更新