所以我有3个表单,我们称之为Form1,Form2和Form3。 我已经将FormM的IsMDIParent属性发送为true。
当我启动应用程序时,它使用
将Form2加载为MDI子项Form2 frm = new Form2();
frm.MdiParent = this;
frm.Show();
这很好用。我当时想要做的是单击一个带有第二个表单的按钮,它将关闭Form2并打开Form3作为Form1的子表单。
我试过
SecondForm SecondFormMDI = new SecondForm();
SecondFormMDI.MdiParent = Form1;
SecondFormMDI.Show();
在Form2中的按钮单击事件,但它不起作用。
我是否必须始终从父表单启动子表单?如果是这样,当它出现在子表单上的按钮点击事件时,我该怎么做呢?
答案 0 :(得分:1)
只需使用this.MdiParent,而不是Form1,如
SecondForm SecondFormMDI = new SecondForm();
SecondFormMDI.MdiParent = this.MdiParent;
SecondFormMDI.Show();
答案 1 :(得分:0)
您可以在设计时设置任何表单的MDIParent,为什么在运行时? 只需将Form2和Form3的MDIParent属性值设置为Form1即可。
答案 2 :(得分:0)
您可以在MDIForm中创建一个方法来打开子窗体:
public void OpenForm(Form form)
{
form.MdiParent = this;
form.Show();
}
如果要以其他形式打开新表单,可以执行以下操作(使用按钮的ChildFormOne示例):
private void btnOpenChildFormTwo_Click(object sender, EventArgs e)
{
((MDIForm)this.MdiParent).OpenForm(new ChildFormTwo());
this.Close();
}
希望这有帮助。
答案 3 :(得分:0)
ChildForm frmChild = new ChildForm();
frmChild.MdiParent = this.MdiParent;
frmChild.Dock = DockStyle.Fill();
frmChild.Show();