Nevím, jestli se za běhu aplikace dá zjistit, v jaké složce byl daný soubor s kódem (u Resources to jde, ale u kompilovaných věcí podle mě ne). Je tedy nutné, aby formuláře, které chcete jako MDI potomky umístit do velkého formuláře, začínaly nějakou stejnou předponou (např. child, záleží na vás). Pak stačí tento kód - není to nic pro začátečníky, je to pokročilá technika Reflection, která má mnoho nevýhod, ale fungovat by měla.
Imports System.Reflection
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim asm As Assembly = Assembly.GetExecutingAssembly()
For Each t As Type In asm.GetTypes()
'projít všechny typy v aplikaci
If t.IsSubclassOf(GetType(Form)) Then
If t.Name.StartsWith("child") Then
'pokud je daný typ poděden z Form a název, vytvořit instanci
Dim f As Form = Activator.CreateInstance(t)
f.MdiParent = Me
f.Show()
End If
End If
Next
End Sub
End Class
Doufám, že to bude stačit. Formuláře, které se mají vytvořit, označte předponou child, takže něpříklad childZakazky, childNabidky atd.
|