Procedura: implementare un provider di estensione
I provider Extender consentono di aggiungere proprietà ad altri controlli. Anche nei controlli ActiveX veniva utilizzato il concetto di provider di estensione, ma era necessario il supporto di uno speciale linguaggio di programmazione. In .NET Framework i provider di estensione non necessitano di alcun supporto speciale. Nel codice sorgente le proprietà dei provider di estensione vengono impostate sui singoli oggetti provider di estensione. Per impostare il valore di tali proprietà su altri oggetti è necessario conoscere sia l'oggetto su cui impostare il valore sia il nuovo valore della proprietà. In Windows Form, ad esempio, è disponibile un componente ToolTip che offre una proprietà di estensione ad altri controlli. La proprietà impostata su altri oggetti è una stringa che rappresenta la descrizione del comando visualizzata quando il pulsante del mouse viene posizionato sopra il controllo. Nell'esempio di codice riportato di seguito viene illustrato come impostare la proprietà ToolTip.
tooltip1.SetToolTip(button1, "The tooltip text")
tooltip1.SetToolTip(button1, "The tooltip text");
In fase di progettazione le proprietà di estensione sono indicate nel visualizzatore proprietà come proprietà definite per gli oggetti da esse estesi, anziché per l'effettivo oggetto di estensione. Nell'esempio precedente la proprietà ToolTip è presente su button1, non su tooltip1.
Per implementare un provider di estensione
Definire un componente che implementi l'interfaccia IExtenderProvider.
Public Class MyExtender Implements IExtenderProvider ... End Class
public class MyExtender : IExtenderProvider {...}
La definizione di IExtenderProvider è illustrata di seguito.
Public Interface IExtenderProvider Function CanExtend(ByVal extendee As Object) As Boolean End Interface
public interface IExtenderProvider { bool CanExtend(object extendee); }
Implementare il metodo CanExtend in modo che restituisca true per ciascun componente o controllo per il quale vengono fornite proprietà dal provider di estensione.
Definire un insieme di proprietà che il provider di estensione possa fornire ad altri componenti. Le proprietà rappresentano in realtà dei metodi perché accettano un parametro supplementare che specifica il componente cui ciascuna proprietà va applicata.
È necessario che le classi di provider di estensione siano contrassegnate da un attributo ProvidePropertyAttribute. Il costruttore dell'attributo ProvidePropertyAttribute accetta due argomenti: una stringa che specifica il nome della proprietà da aggiungere e il tipo di oggetto a cui fornire la proprietà.
<ProvideProperty("HelpText", GetType(IComponent))> _
Public Class MyExtender
Implements IExtenderProvider
...
End Class
[ProvideProperty("HelpText", typeof(IComponent))]
class MyExtender : IExtenderProvider {...}
Mentre un provider di estensione è in grado di fornire proprietà a qualsiasi componente, l'implementazione include in genere caratteristiche che ne consentono l'utilizzo solo con una specifica categoria di componenti.
Per un esempio completo, vedere Procedura: implementare un provider di estensione HelpLabel.
Vedere anche
Attività
Procedura: implementare un provider di estensione HelpLabel