Gewusst wie: Implementieren eines Extenderanbieters

Extenderanbieter können Steuerelementen Eigenschaften hinzufügen. ActiveX-Steuerelemente haben ebenfalls das Konzept von Extenderanbietern verwendet, jedoch die Unterstützung durch eine spezielle Programmiersprache erforderlich gemacht. In .NET Framework erfordern Extenderanbieter keine besondere Unterstützung. Im Quellcode befindet sich die Extenderanbietereigenschaft für das Extenderanbieterobjekt. Das Einstellen des Werts für die Eigenschaft eines anderen Objekts erfordert zwei bestimmte Informationen: das Objekt, für das der Wert festgelegt werden soll, und den Wert der Eigenschaft. Windows Forms verfügt z. B. über eine ToolTip-Komponente, die eine Extendereigenschaft für andere Steuerelemente zur Verfügung stellt. Die damit für andere Objekte festgelegte Eigenschaft ist die Zeichenfolge der QuickInfo, die angezeigt wird, wenn der Mauszeiger auf das Steuerelement zeigt. Im folgenden Codebeispiel wird veranschaulicht, wie die ToolTip-Eigenschaft festgelegt wird.

tooltip1.SetToolTip(button1, "The tooltip text")
tooltip1.SetToolTip(button1, "The tooltip text");

Extendereigenschaften werden zur Entwurfszeit im Eigenschaftenbrowser als Eigenschaften für die Objekte angezeigt, die sie erweitern, nicht aber für das tatsächliche Extenderobjekt. Im vorherigen Beispiel wird die ToolTip-Eigenschaft für button1 angezeigt, nicht für tooltip1.

So implementieren Sie einen Extenderanbieter

  1. Definieren Sie eine Komponente, die die IExtenderProvider-Schnittstelle implementiert.

    Public Class MyExtender
       Implements IExtenderProvider
       ...
    End Class
    
    public class MyExtender : IExtenderProvider {...}
    

    Die Definition von IExtenderProvider lautet wie folgt.

    Public Interface IExtenderProvider
       Function CanExtend(ByVal extendee As Object) As Boolean
    End Interface
    
    public interface IExtenderProvider {
        bool CanExtend(object extendee);
    }
    
  2. Implementieren Sie die CanExtend-Methode, sodass sie den Wert true für jede Komponente oder jedes Steuerelement zurückgibt, für die bzw. das der Extender Eigenschaften bereitstellt.

  3. Definieren Sie einen Eigenschaftensatz, den der Extender anderen Komponenten zur Verfügung stellen kann. Die Eigenschaften sind eigentlich Methoden, da sie einen zusätzlichen Parameter zur Angabe der Komponente enthalten, auf die die Eigenschaft angewendet werden soll.

Eine Extenderanbieterklasse muss mit ProvidePropertyAttribute gekennzeichnet sein. Der Konstruktor des ProvidePropertyAttribute enthält zwei Argumente: erstens eine Zeichenfolge mit dem Namen der hinzuzufügenden Eigenschaft, und zweitens den Typ des Objekts, für das die Eigenschaft bereitgestellt werden soll.

<ProvideProperty("HelpText", GetType(IComponent))> _
Public Class MyExtender
   Implements IExtenderProvider 
   ...
End Class
[ProvideProperty("HelpText", typeof(IComponent))]
   class MyExtender : IExtenderProvider {...}

Während ein Extenderanbieter Eigenschaften für beliebige Komponenten zur Verfügung stellen kann, sind bei der Implementierung normalerweise bestimmte Funktionen dafür verantwortlich, dass dies nur für bestimmte Kategorien von Komponenten möglich ist.

Ein vollständiges Beispiel finden Sie unter Gewusst wie: Implementieren eines HelpLabel-Extenderanbieters.

Siehe auch

Aufgaben

Gewusst wie: Implementieren eines HelpLabel-Extenderanbieters

Weitere Ressourcen

Erweitern der Entwurfszeitunterstützung