Übersicht über Typ-Editoren für Benutzeroberflächen

Durch das Implementieren eines Typ-Editors für die Benutzeroberfläche können Sie für komplexe Eigenschaftentypen eine benutzerdefinierte Entwurfszeitumgebung bereitstellen.

Anzeigen und Bearbeiten von benutzerdefinierten Typen

Wenn Sie einen benutzerdefinierten Typ als Eigenschaft verfügbar machen, können Sie den Wert der Eigenschaft auf drei unterschiedliche Arten in einem PropertyGrid bearbeiten:

  • Sie können die Eigenschaft direkt als Zeichenfolge bearbeiten. Dies erfordert einen TypeConverter für den benutzerdefinierten Typ. Weitere Informationen finden Sie unter Gewusst wie: Implementieren eines Typkonverters.

  • Sie können die Eigenschaft über eine Dropdown-Benutzeroberfläche bearbeiten. Dies ist besonders bei Eigenschaften sinnvoll, die mit einem einzelnen Mausklick festgelegt werden können.

  • Sie können die Eigenschaft mit einem modalen Dialogfeld bearbeiten. Wenn die Eigenschaft besonders komplex ist, ist für ihre ordnungsgemäße Bearbeitung möglicherweise ein komplettes Dialogfeld notwendig.

Um entweder die Bearbeitung über einen einzelnen Mausklick oder ein modales Dialogfeld zu aktivieren, müssen Sie einen Typ-Editor für die Benutzeroberfläche implementieren, der mit einem PropertyGrid interagiert.

Dropdown-Editoren sind ideal für Typen, die mit einem einzelnen Mausklick festgelegt werden können. Die Dock-Eigenschaft und die BackColor-Eigenschaft der Control-Klasse bearbeiten Sie z. B. mit einem Dropdown-Editor in einem PropertyGrid.

Der Zugriff auf einen Dropdown-Typ-Editor für die Benutzeroberfläche erfolgt durch Klicken auf die Pfeilschaltfläche (Pfeil nach unten im Eigenschaftenfenster), die in einem PropertyGrid neben der ausgewählten Eigenschaft angezeigt wird. Die benutzerdefinierte Benutzeroberfläche wird angezeigt. Sie ist an das PropertyGrid angefügt. Der obere Rand des Fensters ist entlang dem unteren Rand des Eigenschafteneintrags positioniert, und die Fensterbreite entspricht der Breite des Eigenschafteneintrags. Nachdem der Benutzer eine Auswahl getroffen hat, muss dieses Editorfenster ebenfalls geschlossen werden. Die Implementierung muss die DropDownControl-Methode aufrufen, um das Fenster des Typ-Editors für die Benutzeroberfläche in der Entwurfsumgebung zu positionieren und seine Größe anzupassen, und Sie selbst müssen die CloseDropDown-Methode zum Schließen des Fensters aufrufen.

Modale Dialog-Editoren

Modale Editoren sind bei Typen von Nutzen, für die eine vollständig interaktive Benutzeroberfläche erforderlich ist. Modale Editoren sind z. B. Auflistungs-Editoren wie der Registerkarten-Auflistungs-Editor von TabControl oder das Dialogfeld Spalten bearbeiten des DataGridView-Steuerelements.

Der Zugriff auf einen modalen Typ-Editor für die Benutzeroberfläche erfolgt durch Klicken auf die Schaltfläche mit den Auslassungszeichen (VisualStudioEllipsesButton-Bildschirmabbildung), die in einem PropertyGrid neben der ausgewählten Eigenschaft angezeigt wird. Das modale Dialogfeld wird angezeigt, und der Benutzer interagiert damit wie mit einem typischen Dialogfeld. Die Implementierung muss die ShowDialog-Methode aufrufen, um das Dialogfeld in der Entwurfsumgebung zu positionieren und seine Größe anzupassen.

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

Um einen benutzerdefinierten Typ-Editor für die Benutzeroberfläche zu implementieren, müssen Sie mindestens folgende Aufgaben ausführen:

  • Definieren Sie eine Klasse, die von UITypeEditor abgeleitet ist.

  • Überschreiben Sie die GetEditStyle-Methode, um dem PropertyGrid mitzuteilen, welchen Editorstil der Editor verwendet.

  • Überschreiben Sie die EditValue-Methode für die Behandlung der Benutzeroberfläche, der Verarbeitung von Benutzereingaben und der Zuweisung von Werten.

Sie können in PropertyGrid zusätzliche Unterstützung für die grafische Darstellung eines Werts hinzufügen, indem Sie folgende Aufgaben ausführen:

  • Überschreiben Sie GetPaintValueSupported, um anzugeben, dass der Editor das Anzeigen der Darstellung des Werts unterstützt.

  • Überschreiben Sie PaintValue, um die Anzeige der Darstellung des Werts zu implementieren.

  • Überschreiben Sie die UITypeEditor-Konstruktormethode, wenn der Editor ein Initialisierungsverhalten aufweisen soll.

Tipp

Typ-Editoren für die Benutzeroberfläche werden oft mithilfe von Typen aus dem System.Windows.Forms-Namespace implementiert, dies ist jedoch nicht zwingend erforderlich. Die Standard-Typ-Editoren für die Benutzeroberfläche in .NET Framework werden vom UITypeEditor abgeleitet.

Ableiten von der UITypeEditor-Klasse

Der benutzerdefinierte Typ-Editor für die Benutzeroberfläche muss von der UITypeEditor-Klasse abgeleitet werden. Definieren Sie einen Standardkonstruktor, wenn für den Typ-Editor für die Benutzeroberfläche eine spezielle Initialisierung erforderlich ist.

Überschreiben der GetEditStyle-Methode

Wenn Sie im Designer eine Komponente oder ein Steuerelement auswählen, wird das Eigenschaften-Fenster mit den Eigenschaftswerten der gewählten Komponente bzw. des gewählten Steuerelements aktualisiert. Wenn Sie eine Eigenschaft auswählen, fragt die Entwurfsumgebung die GetEditStyle-Methode ab, um zu bestimmen, wie der Eigenschafteneintrag dargestellt werden soll.

Die Überschreibung gibt einen Wert aus der UITypeEditorEditStyle-Enumeration zurück, um den entsprechenden Stil des Typ-Editors für die Benutzeroberfläche zu übermitteln.

In der folgenden Tabelle ist das den einzelnen UITypeEditorEditStyle-Werten jeweils zugeordnete Verhalten aufgeführt.

Membername

Verhalten

None

Stellt keine interaktive Benutzeroberflächenkomponente bereit. Um einen Zeichenfolgeneintrag in einen Eigenschaftswert zu konvertieren, wird ein entsprechender TypeConverter verwendet.

DropDown

Zeigt eine Schaltfläche mit einem nach unten weisenden Pfeil (Pfeil nach unten im Eigenschaftenfenster) im Eigenschafteneintrag an. Die Benutzeroberfläche wird in einem Dropdownfenster gehostet.

Modal

Zeigt eine Schaltfläche mit Auslassungszeichen (VisualStudioEllipsesButton-Bildschirmabbildung) im Eigenschafteneintrag an. Die Benutzeroberfläche ist ein modales Dialogfeld.

Überschreiben der EditValue-Methode

Die EditValue-Methode zeigt die Benutzeroberfläche an und legt den Wert der Eigenschaft auf den vom Benutzer gewählten Wert fest.

Dropdowneditoren

Für einen Dropdown-Typ-Editor für die Benutzeroberfläche fragen Sie einen Dienstanbieter für die IWindowsFormsEditorService-Schnittstelle ab. Dieser Dienst stellt Informationen über Position und Größe der Benutzeroberfläche bereit. Die Benutzeroberfläche wird i. d. R. als Control implementiert. Die EditValue-Implementierung erstellt eine Instanz dieses Steuerelements, initialisiert sie mit dem aktuellen Eigenschaftswert und übergibt sie dann zur Ausführung durch die Entwurfsumgebung an die DropDownControl-Methode. Wenn der Benutzer einen neuen Wert für die Eigenschaft ausgewählt hat, schließt die EditValue-Implementierung die Benutzeroberfläche durch Aufruf von CloseDropDown. Der Rückgabewert der EditValue-Implementierung wird zum neuen Eigenschaftswert, der in einem PropertyGrid angezeigt wird.

Modaler Editor

Für einen modalen Typ-Editor für die Benutzeroberfläche fragen Sie einen Dienstanbieter für die IWindowsFormsEditorService-Schnittstelle ab. Dieser Dienst stellt Informationen über die Position des Dialogfelds bereit. Die Benutzeroberfläche wird i. d. R. als von Form abgeleitete Klasse implementiert. Die EditValue-Implementierung erstellt eine Instanz dieses Formulars, initialisiert sie mit dem aktuellen Eigenschaftswert und übergibt sie dann zur Ausführung durch die Entwurfsumgebung an die ShowDialog-Methode. Wenn bei diesem Aufruf OK zurückgegeben wird, rufen Sie den neuen Eigenschaftswert aus dem Formular ab und verwenden ihn als Rückgabewert. Der Rückgabewert der EditValue-Implementierung wird zum neuen Eigenschaftswert, der in einem PropertyGrid angezeigt wird.

ITypeDescriptorContext-Parameter

Die EditValue-Methode erhält einen ITypeDescriptorContext-Parameter, mit dem Kontextinformationen über die Entwurfsumgebung abgefragt werden können. Mit diesem Parameter können Sie auf die folgenden Member zugreifen:

Bereitstellen einer grafischen Darstellung des Werts der Eigenschaft

Durch das Überschreiben der PaintValue-Methode können Sie eine grafische Darstellung des Werts der Eigenschaft anzeigen. Mithilfe des bereitgestellten PaintValueEventArgs-Parameters können Sie die Darstellung in einem kleinen Rechteck links neben dem Eigenschafteneintrag in einem PropertyGrid zeichnen.

Tipp

Achten Sie darauf, dass die grafische Darstellung innerhalb der durch die Bounds-Eigenschaften des PaintValueEventArgs-Parameters definierten Begrenzungen liegt.

Überschreiben Sie die GetPaintValueSupported-Methode, sodass true zurückgegeben wird, um die Entwurfsumgebung darauf hinzuweisen, dass der Typ-Editor für die Benutzeroberfläche eine benutzerdefinierte Darstellung seines Werts zeichnet.

Siehe auch

Aufgaben

Gewusst wie: Erstellen eines UI-Typ-Editors

Gewusst wie: Erstellen eines Windows Forms-Steuerelements, das Entwurfszeitfeatures nutzt

Referenz

UITypeEditorEditStyle

IWindowsFormsEditorService

Weitere Ressourcen

UI-Typ-Editoren