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