MDI子窗体使用相同的父窗体相互打开
本文关键字:窗体 MDI | 更新日期: 2023-09-27 18:03:28
我有3个表单,分别叫它们Form1, Form2和Form3。我已经为Form1发送了IsMDIParent属性为true。
当我启动应用程序时,它使用
将Form2加载为MDI ChildForm2 frm = new Form2();
frm.MdiParent = this;
frm.Show();
这很好。然后我要做的是点击第二个表单中的一个按钮,关闭Form2并打开Form3,作为Form1的子表单。
我试着
SecondForm SecondFormMDI = new SecondForm();
SecondFormMDI.MdiParent = Form1;
SecondFormMDI.Show();
设置Form2中的按钮单击事件,但它不起作用。
我必须总是从父窗体启动子窗体吗?如果是这样,当它在子窗体上的button click事件上时,我该怎么做呢?
就用这个。MdiParent,而不是Form1,比如
SecondForm SecondFormMDI = new SecondForm();
SecondFormMDI.MdiParent = this.MdiParent;
SecondFormMDI.Show();
你可以在设计时设置任何表单的MDIParent,为什么要在运行时呢?只需将Form2和Form3的MDIParent属性的值设置为Form1,就可以了。
您可以在MDIForm中创建一个方法来打开子表单:
public void OpenForm(Form form)
{
form.MdiParent = this;
form.Show();
}
当你想在另一个表单中打开一个新表单时,你可以这样做(例如在ChildFormOne with button中):
private void btnOpenChildFormTwo_Click(object sender, EventArgs e)
{
((MDIForm)this.MdiParent).OpenForm(new ChildFormTwo());
this.Close();
}
ChildForm frmChild = new ChildForm();
frmChild.MdiParent = this.MdiParent;
frmChild.Dock = DockStyle.Fill();
frmChild.Show();