Architektur der Entwurfszeit

Die folgende Abbildung bietet eine Übersicht über die Entwurfszeitarchitektur in .NET Framework.

Architektur zur Entwurfszeit

.NET Framework stellt Schnittstellen und Klassen zum Anpassen des Verhaltens von Komponenten und Benutzeroberflächen in einer Entwurfszeitumgebung bereit. Eine Entwurfszeitumgebung umfasst i. d. R. einen Formular-Designer zum Anordnen von Komponenten und einen Eigenschaftenbrowser zum Konfigurieren der Werte einen Komponenteneigenschaft. Eine Entwurfszeitumgebung stellt i. d. R. auch Entwurfszeitdienste bereit. Zugriff und Verwendung der Entwurfszeitdienste erfolgt über Entwurfszeitmechanismen.

.NET Framework definiert Schnittstellen, mit denen Entwickler benutzerdefinierte Entwurfszeitunterstützung implementieren können. Die wichtigste Mechanismen zum Erweitern der Entwurfszeitunterstützung werden in folgende Kategorien eingeteilt: Designer, Typkonverter und Typ-Editoren für die Benutzeroberfläche. Attribute werden auf Typen und Typmember angewendet, um diese den Anbietern von Entwurfszeitunterstützung zuzuordnen.

Attribute

Attribute ordnen einen Typ oder einen Typmember einer Klasse zu, die das Entwurfszeitverhalten erweitert. Ein DesignerAttribute ordnet einen Typ einem Designer zu. Ein TypeConverterAttribute ordnet einen Typ oder einen Typmember einem Typkonverter zu. Ein EditorAttribute ordnet einen Typ oder einen Typmember einem Typ-Editor für Benutzeroberflächen zu. Weitere Informationen zu Attributen in .NET Framework finden Sie unter Entwurfszeitattribute für Komponenten und Attribute und Entwurfszeitunterstützung.

Designer

Ein Designer kann das Verhalten einer Komponente zur Entwurfszeit anpassen. Dies umfasst die Darstellung der Komponente, die Initialisierung und die Interaktion mit dem Benutzer. Ein Designer kann in einem Eigenschaftenbrowser aufgeführte Eigenschaften für eine ausgewählte Komponente hinzufügen, entfernen oder ersetzen. Ein Designer kann benutzerdefinierte Methoden bereitstellen, die mit bestimmten Komponentenereignissen verknüpft oder mit einem benutzerdefinierten Menübefehl oder einem DesignerVerb ausgeführt werden können. Ein Designer kann außerdem Dienste verwenden, die von einer Entwurfszeitumgebung bereitgestellt werden. Weitere Informationen zu Designern finden Sie unter Benutzerdefinierte Designer.

Typkonverter

Ein Typkonverter kann implementiert werden, um Werte zwischen dem von ihm unterstützten Typ und anderen Datentypen zu konvertieren, in die bzw. aus denen er Werte übersetzen kann. Ein Typkonverter kann außerdem die Logik bereitstellen, die die Konfiguration einer Eigenschaft in einem Eigenschaftenbrowser zur Entwurfszeit ermöglicht. Ein Typkonverter kann eine Liste von Standardwerten für eine Eigenschaft des von ihm zur Entwurfszeit in einem Eigenschaftenbrowser unterstützten Typs bereitstellen. Darüber hinaus kann ein Typkonverter Initialisierungscode für die Initialisierung einer Eigenschaft zur Entwurfszeit erzeugen. Informationen zum Implementieren von Typkonvertern finden Sie unter Gewusst wie: Implementieren eines Typkonverters.

Typ-Editoren für Benutzeroberflächen

Ein Typ-Editor für Benutzeroberflächen kann zur Entwurfszeit eine benutzerdefinierte Benutzeroberfläche zum Bearbeiten des Werts einer Eigenschaft und zum Anzeigen der Darstellung des Eigenschaftswerts bereitstellen. Ein Typ-Editor für Benutzeroberflächen ist typspezifisch und stellt zur Entwurfszeit eine Benutzeroberfläche für das Konfigurieren von Eigenschaften des von ihm unterstützten Typs bzw. von abgeleiteten Typen bereit, die kein überschreibendes Attribut besitzen. Ein Typeditor für Benutzeroberflächen kann ein Windows Form oder eine Dropdownliste als Benutzeroberfläche zum Konfigurieren einer Eigenschaft anzeigen. Weitere Informationen zum Implementieren eines Typ-Editors für die Benutzeroberfläche finden Sie unter Gewusst wie: Implementieren eines Typ-Editors für die Benutzeroberfläche.

Tipp

Typkonverter und Typ-Editoren für die Benutzeroberfläche werden sowohl zur Entwurfszeit als auch zur Laufzeit verwendet, Designer hingegen nur zur Entwurfszeit.

Entwurfsbezogene Typen

In den folgenden Tabellen sind einige der wichtigen Klassen aus den entwurfsbezogenen Namespaces aufgeführt.

System.Drawing.Design

Typ

Beschreibung

UITypeEditor

Stellt eine Basisklasse zum Implementieren von Wert-Editoren bereit.

IToolboxService

Stellt Methoden und Eigenschaften bereit, über die die Toolbox in der Entwicklungsumgebung verwaltet und abgefragt werden kann.

ToolboxItem

Stellt eine Basisimplementierung für ein Toolboxelement bereit.

System.ComponentModel.Design

Typ

Beschreibung

DesignerActionList

Stellt die Basisklasse für Typen bereit, die eine Liste von Elementen definieren, mit denen ein Smarttagbereich erstellt wird.

DesignSurface

Stellt eine Benutzeroberfläche zum Entwerfen von Komponenten dar.

IDesigner

Stellt das grundlegende Framework für das Erstellen eines benutzerdefinierten Designers bereit.

IRootDesigner

Unterstützt Ansichtstechnologien für Designer auf Stammebene.

IExtenderProviderService

Stellt eine Schnittstelle zum Hinzufügen und Entfernen von Extenderanbietern zur Entwurfszeit bereit.

UndoEngine

Gibt generische Funktionen zum Rückgängigmachen und Wiederherstellen an.

System.Windows.Forms.Design

Typ

Beschreibung

IWindowsFormsEditorService

Stellt eine Schnittstelle für Typ-Editoren für die Benutzeroberfläche bereit, um zur Entwurfszeit Windows Forms oder ein Steuerelement in einem Dropdownbereich über ein PropertyGrid-Steuerelement anzuzeigen.

ControlDesigner

Die Basisdesignerklasse zum Erweitern des Entwurfsmodusverhaltens eines Control.

DocumentDesigner

Die Basisdesignerklasse zum Erweitern des Entwurfsmodusverhaltens eines Control, das geschachtelte Steuerelemente unterstützt und Bildlaufmeldungen empfängt, sowie zum Bereitstellen einer Entwurfsmodusansicht auf Stammebene für ein solches Steuerelement.

System.Windows.Forms.Design.Behavior

Typ

Beschreibung

BehaviorService

Verwaltet die Benutzeroberfläche im Designer.

Behavior

Stellt die Behavior-Objekte dar, die von einem BehaviorService verwaltet werden.

Adorner

Verwaltet eine Auflistung der auf die Benutzeroberfläche bezogenen Glyph-Objekte. Diese Klasse kann nicht vererbt werden.

Glyph

Stellt eine einzelne von einem Adorner verwaltete Benutzeroberflächenentität dar.

Entwurfszeitdienste

.NET Framework stellt einen Satz von Entwurfszeitdiensten bereit, mit denen die Funktionen eines Designers erweitert werden können. Diese Dienste können Sie mithilfe der GetService-Methode einer im Entwurfsmodus positionierten Komponente abrufen. Sie können eigene Diensttypen hinzufügen, auf die Sie in einem Projekt im Entwurfsmodus mithilfe der AddService-Methode der IDesignerHost-Dienstschnittstelle zugreifen können.

Die IComponentChangeService-Schnittstelle ermöglicht es einem Designer, Benachrichtigungen zu empfangen, wenn Komponenten in der Entwurfszeitumgebung geändert, hinzugefügt oder entfernt werden.

Die IDesignerEventService-Schnittstelle ermöglicht es einem Designer, Benachrichtigungen zu empfangen, wenn Designer der Entwurfszeitumgebung hinzugefügt oder aus dieser entfernt werden und wenn die aktuelle Komponentenauswahl geändert wird.

Die IDesignerFilter-Schnittstelle ermöglicht es einem Designer, der Gruppe von Eigenschaften, die in einem Eigenschaftenbrowser für die Komponente angezeigt werden, Elemente hinzuzufügen und diese zu filtern.

Die IDesignerHost-Schnittstelle stellt eine Schnittstelle zum Hinzufügen und Abrufen von Diensten, zum Behandeln von mit dem Designerzustand zusammenhängenden Ereignissen, zum Ermitteln, ob ein Designer gegenwärtig lädt, sowie zum Verwalten von Komponenten oder Designertransaktionen bereit. Mithilfe von Designertransaktionen kann eine Reihe von Aktionen in einem Modus ausgeführt werden, in dem die Entwurfszeitansicht erst nach dem Abschluss der Aktionsfolge aktualisiert wird, um die Leistung zu steigern. Gleichzeitig steht ein Mechanismus bereit, mit dem einzelne Aktionen einer Transaktion rückgängig gemacht werden können und der vorherige Zustand wiederhergestellt wird.

Die IDesignerOptionService-Schnittstelle ermöglicht es einem Designer, die im Eigenschaftenraster des Windows Forms-Designers aufgeführten Eigenschaftswerte abzurufen und festzulegen. Auf dieses Raster kann in der Visual Studio-Umgebung im Menü Tools über das Menüelement Optionen zugegriffen werden. Die DesignerOptionService-Klasse erweitert die Flexibilität bei der Abfrage von Optionen.

Die IDictionaryService-Schnittstelle ermöglicht es einem Designer, eine auf Schlüsseln basierende Auflistung für benutzerdefinierte Daten und Schlüsselpaare zu verwenden, auf die über einen Schlüssel oder einen Wert zugegriffen werden kann.

Die IEventBindingService-Schnittstelle ermöglicht einem Designer zur Entwurfszeit das Verfügbarmachen von Ereignissen für eine Komponente in einem Eigenschaftenbrowser, während die Komponente ausgewählt ist.

Die IExtenderListService-Schnittstelle ermöglicht es einem Designer, in der Entwurfszeitumgebung die derzeit aktivierten Extenderanbieter abzurufen. Die IExtenderProviderService-Schnittstelle ermöglicht einem Designer das Hinzufügen oder Entfernen von Extenderanbietern zur Entwurfszeit.

Die IHelpService-Schnittstelle ermöglicht einem Designer das Erstellen und Entfernen von Hilfsdienstkontexten, das Erstellen und Entfernen von Hilfekontextattributen und das Anzeigen von Hilfethemen anhand von Schlüsselwörtern oder URLs.

Die IInheritanceService-Schnittstelle ermöglicht einem Designer die Suche nach Komponenten abgeleiteter Klassen sowie die Identifizierung der jeweiligen Vererbungsattribute.

Die IMenuCommandService-Schnittstelle ermöglicht es einem Designer, in der Entwurfszeitumgebung nach Menübefehlen zu suchen, diese hinzuzufügen, zu entfernen oder aufzurufen.

Die IReferenceService-Schnittstelle ermöglicht es einem Designer, im aktuellen Projekt im Entwurfsmodus Objektnamen anhand von Verweisen, Verweise auf Objekte anhand von Namen, Verweise auf eine übergeordnete Komponente oder Verweise auf Objekte eines angegebenen Typs abzurufen.

Die IResourceService-Schnittstelle ermöglicht einem Designer das Abrufen eines Ressourcenreaders oder Ressourcenwriters für eine angegebene CultureInfo.

Die IRootDesigner-Schnittstelle ermöglicht einem Designer das Ersetzen der Stammdesigneransicht durch eine benutzerdefinierte Designeransicht. Die IRootDesigner-Schnittstelle muss vom Designer für eine Komponente implementiert werden.

Die ISelectionService-Schnittstelle ermöglicht einem Designer das Abrufen einer Gruppe von Verweisen auf die momentan ausgewählten Komponenten sowie das Festlegen der Auswahl auf eine Komponente oder eine Gruppe von Komponenten. Außerdem kann er über diese Schnittstelle ermitteln, ob eine Komponente ausgewählt ist.

Die IServiceContainer-Schnittstelle ermöglicht einem Designer das Hinzufügen oder Entfernen von Diensten, die von anderen Komponenten oder Designern verwendet werden können.

Die ITypeDescriptorFilterService-Schnittstelle ermöglicht einer Komponente oder einem Designer das Filtern der Attribute, Ereignisse und Eigenschaften, die von einer beliebigen Komponente zur Entwurfszeit verfügbar gemacht werden. Die ITypeDescriptorFilterService-Schnittstelle muss von einer Klasse implementiert werden, die mithilfe der AddService-Methode der Site der positionierten Komponente im Entwurfsmodus als Dienst hinzugefügt werden kann.

Die ITypeResolutionService-Schnittstelle ermöglicht es einem Designer, dem Projekt einen Verweis auf eine Assembly hinzuzufügen, einen Typ oder eine Assembly anhand des Namens sowie den Pfad einer angegebenen Assembly abzurufen.

Die DesignerActionService-Klasse und die DesignerActionUIService-Klasse implementieren das Smarttagfeature für benutzerdefinierte Designer. Weitere Informationen finden Sie unter Designerbefehle und das DesignerAction-Objektmodell für Windows Forms.

Der BehaviorService verwaltet die Benutzeroberfläche in einem Designer. Er stellt eine einheitliche Möglichkeit für die Bearbeitung von Benutzeroberflächenelementen (z. B. mausbezogene Ereignisse, Menübefehle und OLE-Drag&Drop-Vorgänge) zur Entwurfszeit bereit. Weitere Informationen finden Sie unter Übersicht über den Behavior-Dienst.

Die CodeDomComponentSerializationService-Klasse serialisiert einen Satz von Komponenten oder serialisierbaren Objekten in einen Serialisierungsspeicher. Weitere Informationen finden Sie unter Übersicht über die Designerserialisierung.

Siehe auch

Aufgaben

Gewusst wie: Implementieren eines Typkonverters

Gewusst wie: Implementieren eines Typ-Editors für die Benutzeroberfläche

Gewusst wie: Zugriff auf Entwurfszeitdienste

Gewusst wie: Zugriff auf Entwurfszeitunterstützung in Windows Forms

Konzepte

Attribute und Entwurfszeitunterstützung

Designerbefehle und das DesignerAction-Objektmodell für Windows Forms

Übersicht über den Behavior-Dienst

Übersicht über die Designerserialisierung

Weitere Ressourcen

Erweitern der Entwurfszeitunterstützung

Benutzerdefinierte Designer