Egy Form-ból úgy készíthetünk MDI szülő ablakot, hogy annak IsMdiContainer property-jét igazra állítjuk. Ha már van MDI szülő, akkor ehhez MDI gyermekablakot a következőképpen rendelhetünk. Hozzunk létre egy szokványos Form-ot, majd ennek megjelenítésekor az MdiParent property-t állítjuk be a MDI szülő Form-ra.
Dim form2 As New Form2()
form2.MdiParent = Me
form2.Text = MdiChildren.Length.ToString()
form2.Show()
Mivel minden MDI gyermekablak ily módon tárolja a szülőablakot, ezt felhasználhatjuk arra is, hogy a gyermekablakból elérhetjük a szülőablak tulajdonságait és befolyásolhatjuk azokat.
Private Sub button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles button1.Click
Me.MdiParent.Text = DateTime.Now.ToString()
End Sub 'button1_Click
A Form-nál találunk egy MdiChildren nevű property-t. Ez egy olyan kollekciót tárol, melyben az összes gyermek Form megtalálható. Így egy ciklus segítségével könnyedén végigmehetünk az összes gyermek Form-on, és tetszőleges műveleteket végezhetünk rajtuk.
For i = 0 To (Me.MdiChildren.Length) - 1
Me.MdiChildren(i).Width = m
Me.MdiChildren(i).Height = m
Next i
Készíthetünk például egy olyan funkciót is, mely bezárja az összes megnyitott gyermek Form-ot.
A MDI szülő Form MdiChildActivate eseményét felhasználva értesülhet alkalmazásunk arról, hogy megváltozott az aktív gyermekablak és mostantól egy másik gyermekablak lett az aktív. Hogy melyik is lett ez az aktív ablak, azt az ActiveMdiChild property-n keresztül tudhatjuk meg, mely Form típusban tárolja ezt az információt.
Private Sub Form1_MdiChildActivate(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.MdiChildActivate
label1.Text = Me.ActiveMdiChild.Text
End Sub 'Form1_MdiChildActivate
Arra is lehetőségünk van, hogy a megnyitott MDI gyermekablakokat elrendezzük egymáshoz képest. Ehhez a szülő Form LayoutMdi függvényét kell meghívnunk.
Private Sub menuItem2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles menuItem1.Click, menuItem2.Click, menuItem3.Click, menuItem4.Click
Dim mi As MenuItem = sender
Me.LayoutMdi(CType(mi.Index, MdiLayout))
End Sub 'menuItem2_Click
Az elrendezés módja az alábbiak egyike lehet:
| Mód |
Leírás |
| ArrangeIcons |
A minimalizált méretű gyermek Form-ok egymás mellé rendezése. |
| Cascade |
A gyermek Form-ok egymásra lapoltan rendeződnek el. |
| TileHorizontal |
Vízszintesen egymás mellé kerülnek a gyermekablakok. |
| TileVertical |
Függőlegesen egymás alá kerülnek a gyermekablakok. |