Criando e usando componentes no Visual Basic
Um componente é uma classe que implementa a interface System.ComponentModel.IComponent ou que deriva direta ou indiretamente de uma classe que implementa IComponent. Um componente .NET é um objeto reutilizável, pode interagir com outros objetos e fornece controle sobre recursos externos e suporte ao tempo de design.
Um recurso importante dos componentes é que eles são projetáveis, o que significa que uma classe que é um componente pode ser usada no ambiente de desenvolvimento integrado do Visual Studio. Um componente pode ser adicionado à Caixa de Ferramentas, arrastado e solto em um formulário e manipulado em uma superfície de design. O suporte ao tempo de design de base para componentes é integrado ao .NET. Um desenvolvedor de componentes não precisa fazer nenhum trabalho adicional para aproveitar a funcionalidade de base do tempo de design.
Um controle é semelhante a um componente, pois ambos são projetáveis. No entanto, um controle fornece uma interface do usuário, enquanto que um componente não. Um controle deve derivar de uma das classes de controle base: Control ou Control.
Quando criar um componente
Se sua classe for ser usada em uma superfície de design (como o Designer do Windows Forms ou do Web Forms), mas não tiver uma interface do usuário, ela deverá ser um componente e implementar IComponent ou derivar de uma classe que implementa, direta ou indiretamente, IComponent.
As classes Component e MarshalByValueComponent são implementações base da interface IComponent. A principal diferença entre essas classes é que o marshaling da classe Component é realizado por referência, enquanto o marshaling de IComponent é realizado por valor. A lista a seguir fornece diretrizes amplas para os implementadores.
Se o componente precisar ter o marshaling realizado por referência, derive de Component.
Se o componente precisar ter o marshaling realizado por valor, derive de MarshalByValueComponent.
Se o seu componente não puder derivar de uma das implementações de base devido a herança única, implemente IComponent.
Classes de componentes
O namespace System.ComponentModel fornece classes que são usadas para implementar o comportamento de tempo de design e tempo de execução de componentes e controles. Este namespace inclui as classes e interfaces base para implementar atributos e conversores de tipo, associar a fontes de dados e licenciar componentes.
As classes de componente principais são:
Component. Uma implementação base para a interface IComponent. Essa classe habilita o compartilhamento de objeto entre aplicativos.
MarshalByValueComponent. Uma implementação base para a interface IComponent.
Container. A implementação base para a interface IContainer. Essa classe encapsula zero ou mais componentes.
Algumas das classes usadas para licenciamento de componentes são:
License. A classe base abstrata para todas as licenças. Uma licença é concedida a uma instância específica de um componente.
LicenseManager. Fornece propriedades e métodos para adicionar uma licença a um componente e gerenciar um LicenseProvider.
LicenseProvider. A classe base abstrata para implementar um provedor de licença.
LicenseProviderAttribute. Especifica a classe LicenseProvider a ser usada com uma classe.
Classes normalmente usadas para descrever e persistir componentes.
TypeDescriptor. Fornece informações sobre as características de um componente, como atributos, propriedades e eventos.
EventDescriptor. Fornece informações sobre um evento.
PropertyDescriptor. Fornece informações sobre uma propriedade.
Seções relacionadas
Solução de problemas de criação de controle e de componente
Explica como corrigir problemas comuns.