Feedback

VB - Eigene Form aus ClassLibrary DLL Aufrufen

Veröffentlicht von am 19.08.2011
(1 Bewertungen)
Diese Fuktion ermöglicht eine Form aus eigene ClassLibrary DLL aufzurufen.

Einfach den Pfad der DLL angeben und Name der Form die im DLL ist angeben.


Folgende Importe werden benötigt:
Imports System.Reflection
Imports System.IO



Aufruf Beispiel:

Form1 aus ClassLibrary1.dll aufrufen
CallDLLForm(Application.StartupPath & "\ClassLibrary1.dll", "Form1")


Form1 aus ClassLibrary2.dll aufrufen
CallDLLForm(Application.StartupPath & "\ClassLibrary2.dll", "Form1")

------------------------------------------------------------------------------------------------


2 Formen aus einer ClassLibrary1.dll aufrufen

Form1 aus ClassLibrary1.dll aufrufen

CallDLLForm("C:\ClassLibrary1.dll", "Form1")


Form2 aus ClassLibrary1.dll aufrufen
CallDLLForm("C:\ClassLibrary1.dll", "Form2")
    ''' <summary>Ruft eine Form1 auf in einer DLL</summary>
    ''' <param name="DLLpath">Pfad zur DLL (Beispiel: C:\TEST.dll)</param>
    ''' <param name="FormName">Form Name in DLL (Beispiel: Form1 oder frmMain)</param>
    Public Sub CallDLLForm(ByVal DLLpath As String, ByVal FormName As String)
        Dim DLLFilenameEx As String = Path.GetFileName(DLLpath)
        Dim Filename As String = Path.GetFileNameWithoutExtension(DLLpath)
        Try
            Dim A As [Assembly] = [Assembly].LoadFrom(DLLpath)
            Dim B As [Module] = A.GetModule(DLLFilenameEx)
            Dim C As Type = B.GetType(Filename & "." & FormName)
            Dim D As Form = DirectCast(Activator.CreateInstance(C), Form)
            D.ShowDialog()
        Catch ex As Exception
            MessageBox.Show(ex.Message.ToString, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try
    End Sub

2 Kommentare zum Snippet

Fawk_18 schrieb am 16.02.2012:
Warum so umständlich?
1. Referenz auf die Assembly wo die Form ist.
2. In deinem Code bei den Usings einfach "using NamespaceDeinerAssembly;"
3. In der gewünschten stelle "FormName frm = new FormName();" und anschließend frm.ShowDialog() oder ".Show();

Lg Fawk_18
Florian Wartner schrieb am 18.02.2013:
Dachte ich mir auch so.. ^^
 

Logge dich ein, um hier zu kommentieren!