Eine Einführung in die Programmierung eines VB.NET-Steuerelements mit Vererbung

Das Erstellen vollständiger benutzerdefinierter Komponenten kann ein sehr fortgeschrittenes Projekt sein. Sie können jedoch eine VB.NET-Klasse erstellen, die viele der Vorteile einer Toolbox-Komponente mit viel weniger Aufwand bietet. Hier ist wie!

Probieren Sie dieses Experiment aus, um einen Eindruck davon zu bekommen, was Sie tun müssen, um eine vollständige benutzerdefinierte Komponente zu erstellen:

-> Öffnen Sie ein neues Windows-Anwendungsprojekt in VB.NET.
-> Fügen Sie dem Formular ein Kontrollkästchen aus der Toolbox hinzu.
-> Klicken Sie oben im Projektmappen-Explorer auf die Schaltfläche "Alle Dateien anzeigen".

Dadurch werden die von Visual Studio für Ihr Projekt erstellten Dateien angezeigt (dies ist nicht erforderlich). Als historische Fußnote hat der VB6-Compiler viele der gleichen Dinge getan, aber Sie konnten nie auf den Code zugreifen, da er in kompiliertem "p-Code" vergraben war. Sie konnten in VB6 auch benutzerdefinierte Steuerelemente entwickeln, dies war jedoch sehr viel schwieriger und erforderte ein spezielles Dienstprogramm, das Microsoft nur zu diesem Zweck bereitstellte.

In der Form Designer.vb Datei, werden Sie feststellen, dass der Code unten automatisch an den richtigen Stellen hinzugefügt wurde, um die CheckBox-Komponente zu unterstützen. (Wenn Sie über eine andere Version von Visual Studio verfügen, kann sich Ihr Code geringfügig unterscheiden.) Dies ist der Code, den Visual Studio für Sie schreibt.

'Erforderlich für die privaten Windows Form Designer-Komponenten _ Als System.ComponentModel.IContainer'HINWEIS: Die folgende Prozedur ist für den Windows Form Designer erforderlich.' Kann mit dem Windows Form Designer geändert werden . _Private Sub InitializeComponent () Me.CheckBox1 = Neues System.Windows.Forms.CheckBox () Me.SuspendLayout () "CheckBox1 'Me.CheckBox1.AutoSize = True Me.CheckBox1.Location = Neues System.Drawing.Point (29, 28 ) Me.CheckBox1.Name = "CheckBox1" ... und so weiter ... 

Dies ist der Code, den Sie Ihrem Programm hinzufügen müssen, um ein benutzerdefiniertes Steuerelement zu erstellen. Beachten Sie, dass sich alle Methoden und Eigenschaften des tatsächlichen CheckBox-Steuerelements in einer von .NET Framework bereitgestellten Klasse befinden: System.Windows.Forms.CheckBox. Dies ist nicht Teil Ihres Projekts, da es in Windows für alle .NET-Programme installiert ist. Aber es gibt eine Menge davon.

Ein weiterer wichtiger Punkt ist, dass die .NET CheckBox-Klasse bei Verwendung von WPF (Windows Presentation Foundation) aus einer vollständig anderen Bibliothek mit dem Namen stammt System.Windows.Controls. Dieser Artikel funktioniert nur für eine Windows Forms-Anwendung. Die hier angegebenen Vererbungsprinzipien gelten jedoch für alle VB.NET-Projekte.

Angenommen, Ihr Projekt benötigt ein Steuerelement, das einem der Standardsteuerelemente sehr ähnlich ist. Beispiel: Ein Kontrollkästchen, dessen Farbe geändert wurde, oder ein kleines "fröhliches Gesicht" anstelle der kleinen "Scheck" -Grafik. Wir werden eine Klasse erstellen, die dies tut und Ihnen zeigt, wie Sie es Ihrem Projekt hinzufügen können. Obwohl dies für sich genommen nützlich sein könnte, besteht das eigentliche Ziel darin, VB.NETs zu demonstrieren Erbe.

Beginnen wir mit der Codierung

Ändern Sie zunächst den Namen des Kontrollkästchens, das Sie gerade hinzugefügt haben oldCheckBox. (Möglicherweise möchten Sie die Anzeige von "Alle Dateien anzeigen" beenden, um den Projektmappen-Explorer zu vereinfachen.) Fügen Sie Ihrem Projekt nun eine neue Klasse hinzu. Es gibt mehrere Möglichkeiten, dies zu tun, einschließlich eines Rechtsklicks auf das Projekt im Projektmappen-Explorer und der Auswahl von "Hinzufügen" und dann "Klasse" oder der Auswahl von "Klasse hinzufügen" unter dem Menüpunkt "Projekt". Ändern Sie den Dateinamen der neuen Klasse in newCheckBox die Dinge gerade zu halten. Öffnen Sie schließlich das Codefenster für die Klasse und fügen Sie diesen Code hinzu:

Öffentliche Klasse newCheckBox erbt CheckBox Private CenterSquareColor As Color = Color.Red Geschützte Überschreibungen Sub OnPaint (ByVal pEvent _ As PaintEventArgs) Dim CenterSquare _ As New Rectangle (3, 4, 10, 12) MyBase.OnPaint (pEvent) If Me.Checked Then pEvent.Graphics.FillRectangle (New SolidBrush (CenterSquareColor), CenterSquare) End If End SubEnd Class

(In diesem und anderen Artikeln auf der Website werden viele Zeilenfortsetzungen verwendet, um die Zeilen kurz zu halten, damit sie in den auf der Webseite verfügbaren Platz passen.)

Das Erste, was Sie an Ihrem neuen Klassencode bemerken sollten, ist der Erbt Stichwort. Das bedeutet, dass alle Eigenschaften und Methoden einer VB.NET Framework CheckBox automatisch Teil dieser sind. Um zu schätzen, wie viel Arbeit dies spart, müssen Sie versucht haben, so etwas wie eine CheckBox-Komponente von Grund auf neu zu programmieren.

Im obigen Code sind zwei wichtige Dinge zu beachten:

Der erste ist der Code verwendet Überschreiben um das standardmäßige .NET-Verhalten zu ersetzen, das für ein OnPaint Veranstaltung. Ein OnPaint-Ereignis wird ausgelöst, wenn Windows feststellt, dass ein Teil Ihrer Anzeige wiederhergestellt werden muss. Ein Beispiel wäre, wenn ein anderes Fenster einen Teil Ihrer Anzeige aufdeckt. Windows aktualisiert die Anzeige automatisch, ruft dann jedoch das OnPaint-Ereignis in Ihrem Code auf. (Das OnPaint-Ereignis wird auch beim erstmaligen Erstellen des Formulars aufgerufen.) Wenn Sie also OnPaint überschreiben, können Sie die Darstellung auf dem Bildschirm ändern.

Das zweite ist die Art und Weise, wie Visual Basic die CheckBox erstellt. Immer wenn das übergeordnete Element "Überprüft" ist (d. H, Me.Checked ist Wahr) Dann färbt der neue Code, den wir in unserer NewCheckBox-Klasse bereitstellen, die Mitte der CheckBox neu, anstatt ein Häkchen zu setzen.