Implementieren eines Extenderproviders
Extenderprovider können Steuerelementen Eigenschaften hinzufügen. ActiveX-Steuerelemente haben ebenfalls das Konzept von Extenderprovidern verwendet, jedoch die Unterstützung durch eine spezielle Programmiersprache erforderlich gemacht. In .NET Framework erfordern Extenderprovider keine besondere Unterstützung. Im Quellcode befindet sich die Extenderprovidereigenschaft für das Extenderproviderobjekt. Das Einstellen des Wertes für die Eigenschaft eines anderen Objekts erfordert zwei bestimmte Informationen: das Objekt, auf das der Wert gesetzt 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. Das folgende Codebeispiel veranschaulicht, wie die ToolTip-Eigenschaft festgelegt wird.
tooltip1.SetToolTip(button1, "The tooltip text")
[C#]
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 Extenderprovider
Definieren Sie eine Komponente, die die System.ComponentModel.IExtenderProvider-Schnittstelle implementiert.
Public Class MyExtender Implements IExtenderProvider ... End Class [C#] public class MyExtender : IExtenderProvider {...}
Die Definition von IExtenderProvider lautet wie folgt.
Public Interface IExtenderProvider Function CanExtend(ByVal extendee As Object) As Boolean End Interface [C#] public interface IExtenderProvider { bool CanExtend(object extendee); }
Implementieren Sie die CanExtend-Methode, so dass sie den Wert true für jede Komponente oder jedes Steuerelement zurückgibt, für die bzw. für das der Extenderprovider Eigenschaften bereitstellt.
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 Extenderproviderklasse muss mit einem 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
[C#]
[ProvideProperty("HelpText", typeof(IComponent))]
class MyExtender : IExtenderProvider {...}
Während ein Extenderprovider 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.
**Hinweis **Die Implementierung eines Extenderproviders für Windows Forms-Steuerelemente unterscheidet sich von der für ASP.NET-Serversteuerelemente.
Ein vollständiges Beispiel finden Sie unter Beispiel eines Extenderproviders in Windows Forms.
Siehe auch
Erweitern der Entwurfszeitfunktionalität | Beispiel eines Extenderproviders in Windows Forms