Compartir a través de


Información general sobre proveedores extensores

Actualización: noviembre 2007

Un proveedor extensor es un componente que proporciona propiedades a otros componentes. Por ejemplo, cuando se agrega un componente ToolTip a un formulario, proporciona una propiedad llamada ToolTip a cada control de ese formulario. La propiedad ToolTip aparece a continuación en cualquier control PropertyGrid asociado. En tiempo de diseño, puede establecer un valor para esta propiedad.

La propiedad proporcionada por el proveedor extensor reside realmente en el propio objeto proveedor extensor y, en consecuencia, no es una propiedad real del componente que modifica. En tiempo de diseño, la propiedad aparece en cualquier PropertyGrid asociado al componente que se modifica. Sin embargo, en tiempo de ejecución no puede tener acceso a la propiedad a través del propio componente. En su lugar, debe llamar al método GetToolTip en el componente ToolTip.

Implementación

La lista siguiente describe los pasos necesarios para implementar un proveedor extensor:

  • Utilice el atributo ProvidePropertyAttribute para especificar la propiedad proporcionada por su proveedor extensor.

  • Implemente la propiedad proporcionada.

  • Realice un seguimiento para averiguar qué controles reciben la propiedad proporcionada.

  • Implemente la interfaz IExtenderProvider.

Para obtener información detallada, vea Cómo: Implementar un proveedor extensor. Para ver un ejemplo completo, consulte Cómo: Implementar un proveedor extensor HelpLabel.

Atributo ProvideProperty

El proveedor extensor es una clase y, como tal, tiene sus propias propiedades y sus propios métodos. Para designar una propiedad como la propiedad que se va a proporcionar a otros componentes, aplique el atributo ProvidePropertyAttribute en el nivel de clase. Este atributo especifica el nombre de la propiedad que se proporciona y el tipo de objeto al que se puede proporcionar esta propiedad.

Implementar la propiedad proporcionada

Por convención, no implementará la propiedad que se proporciona como una propiedad, sino como un par de métodos. Debe denominar estos métodos GetnombreDePropiedad y SetnombreDePropiedad. Por ejemplo, si su implementación de proveedor extensor proporciona una propiedad denominada DemoText, denominará a los métodos GetDemoText y SetDemoText.

Estos métodos toman un parámetro Component único, que le permite realizar un seguimiento de qué valor de propiedad se asigna a cada componente.

Realizar el seguimiento de controles que reciben la propiedad proporcionada

Su implementación de la propiedad proporcionada requiere un objeto IDictionary o algún objeto de otra colección para registrar y recuperar los valores de propiedad para cada componente.

Por ejemplo, podría utilizar la instancia del componente como Key para un objeto DictionaryEntry y el valor de la propiedad como Value del objeto DictionaryEntry. Cuando se llamase al método GetnombreDePropiedad, su implementación consultaría en la colección el valor de propiedad correspondiente al componente dado.

Implementar la interfaz IExtenderProvider

Todas las clases de extensor deben implementar la interfaz IExtenderProvider. Esta interfaz consta de un solo método, CanExtend, que devuelve un valor de tipo Boolean e indica al diseñador si un componente es candidato a ser extendido o no.

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. Por ejemplo, quizá desee crear un extensor que proporcione una propiedad sólo a controles. Su implementación del método CanExtend puede exigir esta restricción.

Vea también

Tareas

Cómo: Implementar un proveedor extensor

Cómo: Implementar un proveedor extensor HelpLabel

Otros recursos

Ampliar compatibilidad en tiempo de diseño