Compartir a través de


Implementar un proveedor extensor

Los proveedores extensores pueden agregar propiedades a controles. Los controles ActiveX también utilizaban el concepto de proveedores extensores, pero requerían la compatibilidad de un lenguaje de programación especial. En .NET Framework, los proveedores extensores no requieren una compatibilidad especial. En el código fuente, una propiedad de proveedor de extensor se encuentra en el objeto proveedor extensor. Para establecer el valor de la propiedad en otro objeto, se necesitan dos elementos: el objeto en que se va a establecer el valor y el nuevo valor de la propiedad. Por ejemplo, Windows Forms tiene un componente ToolTip que ofrece una propiedad extensora para otros controles. La propiedad que establece en otros objetos es una cadena que representa la información sobre herramientas que aparece cuando se pasa el puntero por encima del control. En el ejemplo siguiente de código se muestra cómo establecer la propiedad ToolTip.

tooltip1.SetToolTip(button1, "The tooltip text")
[C#]
tooltip1.SetToolTip(button1, "The tooltip text");

En tiempo de diseño, las propiedades extensoras aparecen en el examinador de propiedades como propiedades de los objetos que extienden, en lugar de aparecer como propiedades del objeto extensor real. En el ejemplo anterior, la propiedad ToolTip aparece en button1, no en tooltip1.

Para implementar un proveedor extensor

  1. Defina un componente que implemente la interfaz System.ComponentModel.IExtenderProvider.

    Public Class MyExtender
       Implements IExtenderProvider
       ...
    End Class
    [C#]
    public class MyExtender : IExtenderProvider {...}
    

    La definición de IExtenderProvider es la siguiente.

    Public Interface IExtenderProvider
       Function CanExtend(ByVal extendee As Object) As Boolean
    End Interface
    [C#]
    public interface IExtenderProvider {
        bool CanExtend(object extendee);
    }
    
  2. Implemente el método CanExtend de manera que devuelva true para cada componente o control al que el extensor proporcione propiedades.

  3. Defina un conjunto de propiedades que pueda proporcionar el extensor a otros componentes. Las propiedades son en realidad métodos, ya que toman un parámetro adicional que especifica el componente al que se va a aplicar la propiedad.

Una clase de proveedor extensor debe marcarse con un atributo ProvidePropertyAttribute. El constructor de ProvidePropertyAttribute toma dos argumentos: primero, una cadena que especifica la propiedad que se va a agregar y, segundo, el tipo de objeto al que se proporciona la propiedad.

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

Aunque un proveedor extensor puede proporcionar propiedades a cualquier componente, la implementación suele incluir características que permiten utilizarlo sólo con una categoría específica de componentes.

**Nota   **La implementación de un proveedor extensor de controles de formularios Windows Forms es distinta de la implementación correspondiente para controles de servidor ASP.NET.

Para obtener un ejemplo completo, vea Ejemplo de proveedor extensor de formularios Windows Forms.

Vea también

Mejorar la compatibilidad en tiempo de diseño | Ejemplo de proveedor extensor de formularios Windows Forms