Udostępnij za pośrednictwem


Obiekty dostawcy rozszerzeń

Dostawca rozszerzony jest składnikiem, który zawiera właściwości do innych składników.Na przykład, gdy ToolTip składnik zostanie dodany do formularza, zawiera właściwość o nazwie ToolTip do każdego formantu w tym formularzu.ToolTip Właściwości pojawia się w Właściwości okno dla każdej kontroli i pozwala programiście wartość tej właściwości w czasie projektowania.

Właściwość dostarczane przez dostawcę urządzenia extender faktycznie rezyduje w sam obiekt dostawcy extender i dlatego nie jest spełniony właściwości składnika, który modyfikuje.W czasie projektowania właściwości pojawią się w Właściwości okna dla składnika, który jest modyfikowany.W czasie wykonywania jednak właściwość nie jest dostępny za pośrednictwem sam składnik.W poniższym przykładzie kodu formularza zostało utworzone z przycisku o nazwie MyButton i ToolTip formantu o nazwie MyToolTip, który zapewnia ToolTip właściwości.

' This is an example of code that is NOT CORRECT!
Dim myString as String
myString = MyButton.ToolTip
// This is an example of code that is NOT CORRECT!
string myString;
myString = MyButton.ToolTip;

Ta składnia wygeneruje błąd kompilacji, ponieważ kompilator nie rozpoznaje ToolTip jako właściwość MyButton, ponieważ właściwość jest faktycznie świadczona przez MyToolTip.Poniższy przykład pokazuje, jak poprawnie dostępu do tej właściwości:

Dim myString as String
myString = MyToolTip.GetToolTip(MyButton)
string myString;
myString = MyToolTip.GetToolTip(MyButton);

Dostawca urządzenia extender jest klasą i jako takie mogą mieć swoje własne właściwości i metod.Aby wyznaczyć właściwość jako właściwość przekazywane do innych składników, należy zastosować ProvidePropertyAttribute atrybut na poziomie klasy.Ten atrybut określa nazwę właściwości, aby zapewnić i typ obiektu może dawać tej właściwości.Umownie właściwości, pod warunkiem nie jest zaimplementowana jako właściwość, lecz raczej jako pary metod.Metody te muszą mieć "Get" i "Set", dodaje się na początku nazwy właściwości mają być dostarczone.W poniższym przykładzie jak.

Imports System.ComponentModel
<ProvideProperty("MyText", GetType(Control))> Public Class MyExtender
   <ExtenderProvidedProperty()> Public Function GetMyText(acontrol as _
      Control) as String
      ' Insert code to implement function.
   End Function
   Public Sub SetMytext (acontrol as Control)
      ' Insert code to implement function.
   End Function
End Class
using System.ComponentModel;
[ProvideProperty("MyText", typeof("Control"))]
public class MyExtender
{
[ExtenderProvidedProperty()]
   public string GetMyText(Control acontrol)
   {
      // Insert code to implement method.
   }
   public void SetMyText(Control acontrol)
   {
      // Insert code to implement method.
   }
}

Wdrożenie podana właściwość będzie wymagać Hashtable lub niektórych innych takich obiektu kolekcji do rejestrowania i pobrać wartości właściwości każdego formantu.Aby uzyskać szczegółowe informacje, zobacz Porady: implementowanie dostawcy rozszerzeń.

Każdej klasy extender musi też implementować IExtenderProvider interfejsu.Ten interfejs składa się z jednej metody, CanExtend, która zwraca wartość logiczną i wskazuje projektanta, czy składnik jest kandydatem do rozszerzony, czy nie.Na przykład można utworzyć urządzenia extender, która zawiera właściwości tylko do formantów.Poniższy przykład pokazuje, jak zaimplementować CanExtend metody:

Imports System.ComponentModel
Public Function CanExtend(ByVal extendee As Object) As Boolean _
   Implements IExtenderProvider.CanExtend
   If Typeof extendee Is Control Then
      Return True
   Else
      Return False
   End If
End Function
public bool CanExtend(object extendee) 
{
   if (extendee is Control)
      return true;
   else
      return false;
}

Zobacz też

Zadania

Porady: implementowanie dostawcy rozszerzeń

Porady: implementowanie dostawcy rozszerzeń HelpLabel

Informacje

IExtenderProvider

ProvidePropertyAttribute

Inne zasoby

Dostawcy rozszerzeń