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

  1. 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);
    }
    
  2. Implementare il metodo CanExtend in modo che restituisca true per ciascun componente o controllo per il quale vengono fornite proprietà dal provider di estensione.

  3. 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

Altre risorse

Estensione del supporto in fase di progettazione