Externe Form aus dll laden Verfasst am: 02.10.2009, 04:43
Ok
jetzt mal was kleines "exotisches"
Wenn ihr eine neue Form in euer Projekt einfügen wollt, macht ihr das ja wie bisher per IDE. Point&Click halt.
Ich zeig euch mal, wie man die Form auch aus einer dll herrausladen kann.
Dazu erstellt ihr erst einmal ein Klassenbibliothekprojekt. Ihr solltet die Grundstruktur einer Klasse sehen können. Jetzt geht ihr im Projektklassenexplorer auf euer Projekt und fügt ganz normal eine neue Form (Form1) hinzu. Die könnt ihr dann mit eueren Controls bestücken.
Wenn ihr fertig seid, erstellt ihr die fertige dll.
Das erst mal als Vorbereitung, jetzt haben wir unsere neue Form in einer dll "gespeichert" und wollen die jetzt von unserem Projekt laden lassen.
Also neues Projekt erstellen.
Als erstes importieren wir den Reflections Namespace. Dann laden wir unsere Assembly in unser Projekt mit
Visual Basic: [code]Dim exAss as Assembly = Assembly.LoadFrom("Pfad_zu_unserer_erstellten_dll")[/code]
Danach besorgen wir uns das umschliessende Modul unserer Form
Visual Basic: [code]Dim AssMod as Module = extAss.GetModule("ClassLibrary1.dll")[/code]
Nach dem Modul kommt unsere eigentliche Form dran
Visual Basic: [code]Dim exForm As Type = AssMod.GetType("ClassLibrary1.Form1")[/code]
Hierbei dürft ihr den ummschliessenden Namespace der Form nicht vergessen!
Jetzt müssen wir nur noch die Form casten
Visual Basic: [code]Dim inForm as Form = DirectCast(Activator.CreateInstance(exForm), Form)[/code]
und anzeigen
Visual Basic: [code]inForm.Show()[/code]
So könnt ihr nicht nur auf Forms zugreifen, sondern auch auf extern gelagerte Methoden. Nützlich zum Beispiel für ein kleines Pluginsystem eurer Programme.