Gemeinsam zu mehr Effizienz in der Anwendungserstellung
|  (→Minimalbeispiel) |  (VB UserControl (Beispiel)) | ||
| Zeile 51: | Zeile 51: | ||
| [[Datei:DotNetLib_DotNetControlContainer_Minimalbeispiel.jpg]] | [[Datei:DotNetLib_DotNetControlContainer_Minimalbeispiel.jpg]] | ||
| + | |||
| + | ==VB.NET UserControl== | ||
| + | |||
| + | * Erstellen Sie mit Visual Studio ein neues Klassenbibliotheks-Projekt | ||
| + | ** Sprache: VB.Net | ||
| + | ** .NET Framework Version 3.5 | ||
| + | ** Projekt-Typ: Klassenbibliothek | ||
| + | ** Projekt-Name: ClassLibrary1 | ||
| + | * Löschen Sie die automatisch generierte Klasse ''Class1.vb'' | ||
| + | * Fügen Sie über die Funktion ''Neues Element hinzufügen'' ein neues Benutzersteuerelement ein und übernehmen Sie die vorgeschlagene Bezeichnung ''UserControl1.vb'' | ||
| + | * Fügen Sie auf dem UserControl1 einen Button ''Button1'' ein | ||
| + | * Wechseln Sie in die Quellcode-Bearbeitung (z.B. Taste [F7]) und übernehmen Sie den folgenden Code für das Control: | ||
| + | |||
| + | <source lang="vb"> | ||
| + | Public Class UserControl1 | ||
| + | |||
| + |     Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click | ||
| + |         MsgBox("Hello World") | ||
| + |     End Sub | ||
| + | |||
| + |     Public Function SayHello() As String | ||
| + |         SayHello = "Hallo, ich bin eine Public Function!" | ||
| + |     End Function | ||
| + | |||
| + | End Class | ||
| + | </source> | ||
| + | |||
| + | * Wechseln Sie in die Eigenschaften des Projekts ''ClassLibrary1'', in der Reiterkarte ''Anwendung'' klicken Sie auf den Button [Assemblyinformationen] und aktivieren im sich öffnenden Fenster die Option ''Assembly COM-sichtbar machen'' | ||
| + | * Erstellen sie das Projekt, kopieren Sie die Datei ''ClassLibrary1.dll'' aus dem Debug-Verzeichnis an einen belieben Ort | ||
| + | * Die folgenden Erläuterungen gehen davon aus, dass sich die Access-Datenbank sowie die Datei ''ClassLibrary1.dll'' im selben Verzeichnis befinden. | ||
| + | * Installieren Sie den DotNetControlContainer im System  | ||
| + | * Erstellen Sie eine leere Access Testdatenbank (mdb oder accdb)  | ||
| + | * Importieren Sie die Klasse NetComDomain aus der Access CodeLib  | ||
| + | * Wenn Sie für den Import nicht den Import Assistenten der Access CodeLib verwenden, müssen Sie händisch einen Verweis auf C:\Windows\Microsoft.NET\Framework\v2.0.50727\mscorlib.tlb sowie einen Verweis auf C:\Windows\Microsoft.NET\Framework\v2.0.50727\mscoree.tlb hinzufügen.  | ||
| + | * Erstellen Sie ein neues, leeres Formular und öffnen Sie es im Entwurfsmodus  | ||
| + | * Wählen Sie im Menü die Option ActiveX Steuerelemente und fügen Sie ein neues ACLibControlConatiner.ControlContainer Objekt ein  | ||
| + | * Prüfen Sie dass der Name des Controls im Formular ControlContainer0 lautet  | ||
| + | * Wenn Sie Access ab Version 2007 (oder Neuer) verwenden setzen Sie in den Objekteigenschaften des Elements ControlContainer0 die Eigenschaft Horizontaler Anker sowie die Eigenschaft Vertikaler Anker auf Beide.  | ||
| + | * Fügen Sie in das Formular einen Button Befehl1 ein.  | ||
| + | * Fügen Sie dem Formular folgenden Code hinzu  | ||
| + | |||
| + | <source lang="vb"> | ||
| + | Option Compare Database | ||
| + | Option Explicit | ||
| + | |||
| + | Private Sub Befehl1_Click() | ||
| + | |||
| + |     Dim DllPath As String | ||
| + |         DllPath = Application.CodeProject.Path & "\" & "ClassLibrary1.dll" | ||
| + | |||
| + |     Dim lib As Object | ||
| + |     With New NetComDomain | ||
| + |         Set lib = .CreateObject("UserControl1", "ClassLibrary1", DllPath) | ||
| + |     End With | ||
| + | |||
| + |     Me.ControlContainer0.Object.LoadControl lib | ||
| + | |||
| + |     MsgBox lib.SayHello | ||
| + | |||
| + |     Set lib = Nothing | ||
| + | |||
| + | End Sub | ||
| + | </source> | ||
| Inhaltsverzeichnis | 
Option Compare Database Option Explicit Private WinForm As Object Private Sub Befehl1_Click() Dim DllPath As String DllPath = "C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Windows.Forms.dll" With New NetComDomain Set WinForm = .CreateObject("Form", "System.Windows.Forms", DllPath) WinForm.Text = "Das ist ein .NET Winform" WinForm.StartPosition = 1 WinForm.ShowIcon = False WinForm.TopLevel = False End With Me.ControlContainer0.Object.LoadControl WinForm WinForm.Show End Sub
Public Class UserControl1 Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click MsgBox("Hello World") End Sub Public Function SayHello() As String SayHello = "Hallo, ich bin eine Public Function!" End Function End Class
Option Compare Database Option Explicit Private Sub Befehl1_Click() Dim DllPath As String DllPath = Application.CodeProject.Path & "\" & "ClassLibrary1.dll" Dim lib As Object With New NetComDomain Set lib = .CreateObject("UserControl1", "ClassLibrary1", DllPath) End With Me.ControlContainer0.Object.LoadControl lib MsgBox lib.SayHello Set lib = Nothing End Sub