Crear y utilizar componentes en Visual Basic
Un componente es una clase que implementa la interfaz System.ComponentModel.IComponent o que deriva directa o indirectamente de una clase que implementa IComponent. Un componente de .NET es un objeto que se puede reutilizar, puede interactuar con otros objetos y proporciona control sobre recursos externos y sobre la compatibilidad en tiempo de diseño.
Una característica importante de los componentes es que se pueden diseñar, lo que significa que se puede usar una clase que es un componente en el entorno de desarrollo integrado de Visual Studio. Los componentes se pueden agregar al cuadro de herramientas, se pueden arrastrar y soltar en un formulario y se pueden manipular en una superficie de diseño. La compatibilidad en tiempo de diseño de los componentes está integrada en .NET. Un desarrollador de componentes no tiene que efectuar ninguna tarea adicional para aprovechar la funcionalidad base del tiempo de diseño.
Un control es similar a un componente, ya que ambos se pueden diseñar, con la diferencia de que un control proporciona una interfaz de usuario, mientras que un componente no. Un control debe derivar de una de las clases de control base: Control o Control.
Cuándo se debe crear un componente
Si la clase se va a usar en una superficie de diseño (como en Windows Forms o en el Diseñador de Web Forms) pero no tiene ninguna interfaz de usuario, debe ser un componente y debe implementar IComponent, o bien debe derivarse de una clase que implemente directa o indirectamente IComponent.
Las clases Component y MarshalByValueComponent son implementaciones base de la interfaz IComponent. La principal diferencia entre estas clases es que la clase Component se serializa por referencia, mientras que IComponent se serializa por valor. En la lista siguiente se proporcionan directrices generales para los implementadores.
Si el componente se tiene que serializar por referencia, se debe derivar de Component.
Si el componente se tiene que serializar por valor, se debe derivar de MarshalByValueComponent.
Si el componente no se puede derivar de una de las implementaciones base debido a la herencia única, implemente IComponent.
Clases de componentes
El espacio de nombres System.ComponentModel proporciona clases que se usan para implementar el comportamiento de los componentes y controles en tiempo de diseño y en tiempo de ejecución. Este espacio de nombres incluye las clases bases y las interfaces para implementar atributos y convertidores de tipos, enlazarlos con orígenes de datos y generar licencias para los componentes.
Las clases de componentes básicas son las siguientes:
Component. Una implementación base para la interfaz IComponent. Esta clase permite el uso compartido de objetos entre aplicaciones.
MarshalByValueComponent. Una implementación base para la interfaz IComponent.
Container. La implementación base de la interfaz IContainer. Esta clase encapsula cero o más componentes.
Algunas de las clases usadas para la generación de licencias de componentes son las siguientes:
License. Clase base abstracta para todas las licencias. Las licencias se conceden a una instancia específica de un componente.
LicenseManager. Proporciona propiedades y métodos para agregar una licencia a un componente y administrar un LicenseProvider.
LicenseProvider. Clase base abstracta para implementar un proveedor de licencias.
LicenseProviderAttribute. Especifica la clase LicenseProvider que se va a usar con una clase.
Clases usadas habitualmente para describir y conservar componentes.
TypeDescriptor. Proporciona información sobre las características de un componente, como sus atributos, propiedades y eventos.
EventDescriptor. Proporciona información sobre un evento.
PropertyDescriptor. Proporciona información sobre una propiedad.
Secciones relacionadas
Solución de problemas relacionados con la creación de controles y componentes
Se explica cómo solucionar problemas comunes.