Partager via


Implémentation d'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 offre une propriété extendeur aux autres contrôles. La propriété qu'il définit sur les autres objets est une chaîne représentant 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")
[C#]
tooltip1.SetToolTip(button1, "The tooltip text");

Au moment du design, les propriétés extendeur s'affichent dans la fenêtre 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 System.ComponentModel.IExtenderProvider.

    Public Class MyExtender
       Implements IExtenderProvider
       ...
    End Class
    [C#]
    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
    [C#]
    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
[C#]
[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.

**Remarque   **L'implémentation d'un fournisseur d'extendeurs pour des contrôles Windows Forms est différente de celle destinée à des contrôles serveur ASP.NET.

Pour obtenir un exemple complet, consultez Exemple de fournisseur d'extendeurs Windows Forms.

Voir aussi

Amélioration de la prise en charge au moment du design | Exemple de fournisseur d'extendeurs Windows Forms