Erstellen und Verwenden von Komponenten in Visual BasicCreating and Using Components 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.A component is a class that implements the System.ComponentModel.IComponent interface or that derives directly or indirectly from a class that implements IComponent. Eine .NET Framework.NET Framework-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.A .NET Framework.NET Framework component is an object that is reusable, can interact with other objects, and provides control over external resources and design-time support.

Ein wichtiges Feature der Komponenten ist, dass sie entworfen werden können, was bedeutet, dass eine Klasse, die eine Komponente ist, in der Visual StudioVisual Studio integrierten Entwicklungsumgebung verwendet werden kann.An important feature of components is that they are designable, which means that a class that is a component can be used in the Visual StudioVisual Studio Integrated Development Environment. Eine Komponente kann der Toolbox hinzugefügt, auf einem Formular abgelegt, und auf der Entwurfsoberfläche bearbeitet werden.A component can be added to the Toolbox, dragged and dropped onto a form, and manipulated on a design surface. Beachten Sie, dass die Basisunterstützung für die Entwurfszeit für Komponenten in .NET Framework.NET Framework integriert ist; ein Komponentenentwickler muss keine zusätzlichen Schritte leisten, um die Basisfunktionalität zur Entwurfszeit zu nutzen.Notice that base design-time support for components is built into the .NET Framework.NET Framework; a component developer does not have to do any additional work to take advantage of the base design-time functionality.

Ein Steuerelement ist einer Komponente ähnlich, da beide entworfen werden können.A control is similar to a component, as both are designable. Allerdings stellt ein Steuerelement eine Benutzeroberfläche bereit, eine Komponente jedoch nicht.However, a control provides a user interface, while a component does not. Ein Steuerelement muss von einer der Basissteuerklassen abgeleitet werden: Control oder Control.A control must derive from one of the base control classes: Control or Control.

Wann eine Komponente zu erstellen istWhen to Create a Component

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.If your class will be used on a design surface (such as the Windows Forms or Web Forms Designer) but has no user interface, it should be a component and implement IComponent, or derive from a class that directly or indirectly implements IComponent.

Die Klassen Component und MarshalByValueComponent sind Implementierungen der Schnittstelle IComponent.The Component and MarshalByValueComponent classes are base implementations of the IComponent interface. Der Hauptunterschied zwischen diesen Klassen besteht darin, das die Component-Klasse als Verweis gemarshallt wird, während IComponent als Wert gemarshallt wird.The main difference between these classes is that the Component class is marshaled by reference, while IComponent is marshaled by value. Die folgende Liste enthält allgemeine Richtlinien für die Implementierung.The following list provides broad guidelines for implementers.

  • Wenn Ihre Komponente als Verweis gemarshallt werden muss, leiten Sie von Component ab.If your component needs to be marshaled by reference, derive from Component.

  • Wenn Ihre Komponente als Wert gemarshallt werden muss, leiten Sie von MarshalByValueComponent ab.If your component needs to be marshaled by value, derive from MarshalByValueComponent.

  • Wenn die Komponente aufgrund einfacher Vererbung nicht von einer der Basisimplementierungen abgeleitet werden kann, implementieren Sie IComponent.If your component cannot derive from one of the base implementations due to single inheritance, implement IComponent.

Weitere Informationen zur Unterstützung während der Entwurfszeit finden Sie unter Entwurfszeitattribute für Komponenten und Erweitern der Entwurfszeitunterstützung.For more information about design-time support, see Design-Time Attributes for Components and Extending Design-Time Support.

KomponentenklassenComponent Classes

Der Namespace System.ComponentModel stellt Klassen bereit, mit denen das Verhalten von Komponenten und Steuerelementen zur Laufzeit und zur Entwurfszeit implementiert wird.The System.ComponentModel namespace provides classes that are used to implement the run-time and design-time behavior of components and controls. Dieser Namespace enthält die Basisklassen und Schnittstellen zum Implementieren von Attributen und Typkonvertern, die Datenquellen binden und Komponenten lizenzieren.This namespace includes the base classes and interfaces for implementing attributes and type converters, binding to data sources, and licensing components.

Die zentralen Komponentenklassen sind:The core component classes are:

Einige der Klassen, die für die Komponentenlizenzierung verwendet werden, sind:Some of the classes used for component licensing are:

Klassen, die häufig zum Beschreiben und Beibehalten von Komponenten verwendet werden.Classes commonly used for describing and persisting components.

  • TypeDescriptor.TypeDescriptor. Stellt Informationen zu den Merkmalen für eine Komponente bereit, z.B. zu Attributen, Eigenschaften und Ereignissen.Provides information about the characteristics for a component, such as its attributes, properties, and events.

  • EventDescriptor.EventDescriptor. Enthält Informationen über ein Ereignis.Provides information about an event.

  • PropertyDescriptor.PropertyDescriptor. Gibt Informationen über eine Eigenschaft an.Provides information about a property.

Klasse vs. Komponente vs. SteuerelementClass vs. Component vs. Control
Definiert Komponente und Steuerelement, und erläutert die Unterschiede zwischen ihnen und den Klassen.Defines component and control, and discusses the differences between them and classes.

KomponentenerstellungComponent Authoring
Roadmap für erste Schritte mit Komponenten.Roadmap for getting started with components.

Exemplarische Vorgehensweise: Erstellen von KomponentenComponent Authoring Walkthroughs
Enthält Links zu Themen, die eine Schritt-für-Schritt-Anleitung für die Programmierung von Komponenten bereitstellen.Links to topics that provide step-by-step instruction for component programming.

KomponentenklassenComponent Classes
Beschreibt, was eine Klasse zu einer Komponente macht, wie Komponentenfunktionen verfügbar gemacht werden und wie der Zugriff auf Komponenten und die Erstellung von Komponenteninstanzen gesteuert werden.Describes what makes a class a component, ways to expose component functionality, controlling access to components, and controlling how component instances are created.

Problembehandlung beim Erstellen von Komponenten und SteuerelementenTroubleshooting Control and Component Authoring
Erläutert die Behebung häufiger Probleme.Explains how to fix common problems.

Siehe auchSee Also

Vorgehensweise: Zugriff auf die zur Entwurfszeit Unterstützung in Windows FormsHow to: Access Design-Time Support in Windows Forms
Vorgehensweise: Erweitern Sie das Aussehen und Verhalten von Steuerelementen im EntwurfsmodusHow to: Extend the Appearance and Behavior of Controls in Design Mode
Vorgehensweise: Ausführen von benutzerdefinierter Initialisierung für Steuerelemente im EntwurfsmodusHow to: Perform Custom Initialization for Controls in Design Mode