Erstellen und Verwenden von Komponenten in Visual Basic

Eine Komponente ist eine Klasse, die die Schnittstelle System.ComponentModel.IComponent implementiert oder die direkt oder indirekt von einer Klasse ableitet, die IComponent implementiert. Eine .NET-Komponente ist ein Objekt, das wiederverwendet werden, mit anderen Objekten interagieren, die Steuerung von externen Ressourcen ermöglichen und Unterstützung während der Entwurfszeit bieten kann.

Ein wichtiges Feature der Komponenten ist, dass sie entworfen werden können, was bedeutet, dass eine Klasse, die eine Komponente ist, in der integrierten Entwicklungsumgebung von Visual Studio verwendet werden kann. Eine Komponente kann der Toolbox hinzugefügt, auf einem Formular abgelegt, und auf der Entwurfsoberfläche bearbeitet werden. Grundlegende Unterstützung für Komponenten zur Entwurfszeit ist in .NET integriert. Ein Entwickler von Komponenten muss daher nichts weiter tun, um in den Genuss der grundlegenden Entwurfszeitfunktionen zu kommen.

Ein Steuerelement ist einer Komponente ähnlich, da beide entworfen werden können. Allerdings stellt ein Steuerelement eine Benutzeroberfläche bereit, eine Komponente jedoch nicht. Ein Steuerelement muss von einer der Basissteuerklassen abgeleitet werden: Control oder Control.

Wann eine Komponente zu erstellen ist

Wenn Ihre Klasse auf einer Entwurfsoberfläche (z.B. dem Windows Forms- oder Web Forms-Designer) verwendet wird, aber keine Benutzeroberfläche hat, sollte sie eine Komponente sein und IComponent implementieren, oder von einer Klasse abgeleitet werden, die direkt oder indirekt IComponent implementiert.

Die Klassen Component und MarshalByValueComponent sind Implementierungen der Schnittstelle IComponent. Der Hauptunterschied zwischen diesen Klassen besteht darin, das die Component-Klasse als Verweis gemarshallt wird, während IComponent als Wert gemarshallt wird. Die folgende Liste enthält allgemeine Richtlinien für die Implementierung.

  • Wenn Ihre Komponente als Verweis gemarshallt werden muss, leiten Sie von Component ab.

  • Wenn Ihre Komponente als Wert gemarshallt werden muss, leiten Sie von MarshalByValueComponent ab.

  • Wenn die Komponente aufgrund einfacher Vererbung nicht von einer der Basisimplementierungen abgeleitet werden kann, implementieren Sie IComponent.

Komponentenklassen

Der Namespace System.ComponentModel stellt Klassen bereit, mit denen das Verhalten von Komponenten und Steuerelementen zur Laufzeit und zur Entwurfszeit implementiert wird. Dieser Namespace enthält die Basisklassen und Schnittstellen zum Implementieren von Attributen und Typkonvertern, die Datenquellen binden und Komponenten lizenzieren.

Die zentralen Komponentenklassen sind:

Einige der Klassen, die für die Komponentenlizenzierung verwendet werden, sind:

  • License. Abstrakte Basisklasse für alle Lizenzen. Eine Lizenz wird einer bestimmten Instanz einer Komponente erteilt.

  • LicenseManager. Stellt Eigenschaften und Methoden zur Verfügung, um eine Lizenz zu einer Komponente hinzuzufügen und einen LicenseProvider zu verwalten.

  • LicenseProvider. Die abstrakte Basisklasse für die Implementierung eines Lizenzgebers.

  • LicenseProviderAttribute. Gibt die Klasse LicenseProvider an, die mit einer Klasse verwendet werden sollen.

Klassen, die häufig zum Beschreiben und Beibehalten von Komponenten verwendet werden.

  • TypeDescriptor. Stellt Informationen zu den Merkmalen für eine Komponente bereit, z.B. zu Attributen, Eigenschaften und Ereignissen.

  • EventDescriptor. Enthält Informationen über ein Ereignis.

  • PropertyDescriptor. Gibt Informationen über eine Eigenschaft an.

Problembehandlung beim Erstellen von Komponenten und Steuerelementen
Erläutert die Behebung häufiger Probleme.

Siehe auch