Что вы делаете, вы создаете еще один экземпляр вашего родителя MDI и устанавливаете Form2
как дочерний элемент этого вновь созданного родителя MDI. Это явно неправильно, вы хотите, чтобы оба были детьми одного и того же родителя.
Либо сделайте это напрямую:
private void btnDone_Click(object sender, EventArgs e)
{
Form2 frm = new Form2();
// both have the same MDI parent
frm.MDIParent = this.MDIParent;
frm.Show();
}
или, если вы настаиваете на повторном использовании вашего CreateForm
private void btnDone_Click(object sender, EventArgs e)
{
Form2 frm = new Form2();
((Home)this.MDIParent).CreateForm( frm );
}
Оба подхода зависят от this.MDIParent
, установленного в form1, и убедитесь, что один и тот же экземпляр используется для вновь созданной формы 2.