Firstly, make sure Form1's IsMdiContainer
is set to true
.
Then instantiate Form1 and Form2, setting Form1 to be Form2's MdiParent:
Form1 form1 = new Form1();
Form2 form2 = new Form2();
form2.MdiParent = form1;
In Form2's code, have something like the following to handle the button's click event to instantiate Form3.
public class Form2 : Form {
Form3 _form3;
public Form2() {
InitializeComponent();
Button1.Click += new EventHandler(Button1_Click);
}
private void Button1_Click(object sender, EventArgs e) {
if(_form3 == null) {
_form3 = new Form3();
_form3.MdiParent = this.MdiParent;
}
}
}
As a couple notes, this code is really quick and dirty. There are several undesirable things about it like the coupling of Form2 and Form3 (as well as unhelpful class names Form1, Form2, and Form3). Ideally, you'd decouple Form2 and Form3 by raising an event from Form2 that your forms container can hook onto and instantiate Form3. This sample code is meant to give you a direction.