IDE:Microsoft Visual Studio 2010 平台:C#.net
我在MDI父表单上加载了子表单。所以,现在我想在我点击最后一个子窗体中的完成按钮时关闭MDI父窗体及其所有子窗体。一旦我点击完成按钮,它应该关闭父和子表单的所有实例,并打开另一个不属于MDI父表单的表单?
答案 0 :(得分:0)
您可以尝试枚举Application.OpenForms
中的表单,检查他们的关系并关闭您需要的内容:
// close childs of parentForm
foreach(var form in Application.OpenForms)
if(form.MDIParent == parentForm)
form.Close();
或者您可以在创建子项目时注册子项,因此您将拥有要关闭的子项列表(伪代码):
// container for childs
List<Form> _childs = new List<Form>();
// when adding new form
Form1 form1 = new Form1();
form1.MDIParent = parentForm;
// register it
_childs.Add(form1);
// unregister when child is closed
form.OnClosed += ChildClosed;
// in ChildClosed
// unregiser
_childs.Remove(sender as Form);
这只是一个强大的想法。可以优化Childs注册(通过为孩子们提供自动执行所有操作的基类)。如果您要为每个孩子提供一些额外的数据,例如,存储他们的位置和大小以进行布局,那么注册孩子会更好。