Comment : implémenter un fournisseur d'extendeurs

Les fournisseurs d'extendeurs peuvent ajouter des propriétés à des contrôles. Les contrôles ActiveX utilisaient également le concept de fournisseurs d'extendeurs, mais ils nécessitaient une prise en charge de langage de programmation spéciale. Dans le .NET Framework, les fournisseurs d'extendeurs ne nécessitent aucune prise en charge spéciale. Dans le code source, il existe une propriété de fournisseur d'extendeurs sur l'objet fournisseur d'extendeurs. La définition de la valeur de la propriété sur un autre objet nécessite deux informations : l'objet sur lequel définir la valeur et la nouvelle valeur de la propriété. Par exemple, Windows Forms possède un composant ToolTip qui propose une propriété extendeur aux autres contrôles. La propriété qu'il définit sur les autres objets est une chaîne qui représente l'Info-bulle qui s'affiche lorsque le pointeur de la souris passe sur le contrôle. L'exemple de code suivant montre comment définir la propriété ToolTip.

tooltip1.SetToolTip(button1, "The tooltip text")
tooltip1.SetToolTip(button1, "The tooltip text");

Au moment du design, les propriétés extendeur s'affichent dans l'Explorateur de propriétés sous la forme de propriétés sur les objets qu'ils étendent, plutôt que sur l'objet extender proprement dit. Dans l'exemple précédent, la propriété ToolTip s'affiche sur button1, et non sur tooltip1.

Implémentation d'un fournisseur d'extendeurs

  1. Définissez un composant qui implémente l'interface IExtenderProvider.

    Public Class MyExtender
       Implements IExtenderProvider
       ...
    End Class
    
    public class MyExtender : IExtenderProvider {...}
    

    La définition de IExtenderProvider est la suivante :

    Public Interface IExtenderProvider
       Function CanExtend(ByVal extendee As Object) As Boolean
    End Interface
    
    public interface IExtenderProvider {
        bool CanExtend(object extendee);
    }
    
  2. Implémentez la méthode CanExtend de sorte qu'elle retourne true pour chaque composant ou contrôle pour lequel votre extendeur fournit des propriétés.

  3. Définissez un ensemble de propriétés que votre extendeur peut fournir à d'autres composants. Les propriétés sont en réalité des méthodes, car elles prennent un paramètre supplémentaire qui spécifie le composant auquel appliquer la propriété.

Une classe de fournisseurs d'extendeurs doit être marquée avec ProvidePropertyAttribute. Le constructeur de ProvidePropertyAttribute prend deux arguments : une chaîne spécifiant le nom de la propriété à ajouter et le type de l'objet auquel la propriété doit être fournie.

<ProvideProperty("HelpText", GetType(IComponent))> _
Public Class MyExtender
   Implements IExtenderProvider 
   ...
End Class
[ProvideProperty("HelpText", typeof(IComponent))]
   class MyExtender : IExtenderProvider {...}

Alors qu'un fournisseur d'extendeurs peut procurer des propriétés à n'importe quel composant, l'implémentation comprend généralement des fonctionnalités qui permettent une utilisation avec une catégorie spécifique de composants uniquement.

Pour l'exemple complet, consultez Comment : implémenter un fournisseur d'extendeurs HelpLabel.

Voir aussi

Tâches

Comment : implémenter un fournisseur d'extendeurs HelpLabel

Autres ressources

Extension de la prise en charge au moment du design