Controles personalizados (Windows Forms .NET)
Com o Windows Forms, você pode criar novos controles ou modificar controles existentes por meio de herança. Este artigo destaca as diferenças entre as maneiras de criar novos controles e fornece informações sobre como escolher um tipo específico de controle para seu projeto.
Classe de controlo de base
A classe Control é a classe base para controles Windows Forms. Ele fornece a infraestrutura necessária para exibição visual em aplicativos Windows Forms e fornece os seguintes recursos:
- Expõe uma alça de janela.
- Gerencia o roteamento de mensagens.
- Fornece eventos de mouse e teclado e muitos outros eventos de interface do usuário.
- Fornece recursos avançados de layout.
- Contém muitas propriedades específicas para exibição visual, como ForeColor, BackColor, Heighte Width.
Como grande parte da infraestrutura é fornecida pela classe base, é relativamente fácil desenvolver seus próprios controles do Windows Forms.
Crie o seu próprio controlo
Há três tipos de controles personalizados que você pode criar: controles de usuário, controles estendidos e controles personalizados. A tabela a seguir ajuda você a decidir qual tipo de controle você deve criar:
Se... | Criar um ... |
---|---|
|
Crie um de controle de usuário |
|
Estenda um controle herdando de um controle específico do Windows Forms. |
|
Crie um controle personalizado herdando a partir de System.Windows.Forms.Control. |
Controlos de utilizador
Um controle de usuário é uma coleção de controles do Windows Forms apresentados como um único controle para o consumidor. Este tipo de controle é chamado de um controlo composto. Os controles contidos são chamados de controles constituintes .
Um controle de usuário contém toda a funcionalidade inerente associada a cada um dos controles Windows Forms contidos e permite que você exponha e vincule seletivamente suas propriedades. Um controle de usuário também fornece uma grande quantidade de funcionalidade de manipulação de teclado padrão sem nenhum esforço de desenvolvimento extra de sua parte.
Por exemplo, um controle de usuário pode ser criado para exibir dados de endereço do cliente de um banco de dados. Esse controle incluiria um controle DataGridView para exibir os campos do banco de dados, um BindingSource para manipular a vinculação a uma fonte de dados e um controle BindingNavigator para mover pelos registros. Você pode expor seletivamente as propriedades de vinculação de dados e pode empacotar e reutilizar todo o controle de aplicativo para aplicativo.
Para obter mais informações, consulte Visão geral do controle de usuário.
Controlos estendidos
Você pode derivar um controle herdado de qualquer controle existente do Windows Forms. Com essa abordagem, você pode manter toda a funcionalidade inerente de um controle Windows Forms e, em seguida, estender essa funcionalidade adicionando propriedades personalizadas, métodos ou outros recursos. Com essa opção, você pode substituir a lógica de pintura do controle base e, em seguida, estender sua interface do usuário alterando sua aparência.
Por exemplo, você pode criar um controle derivado do controle Button que controla quantas vezes um usuário clicou nele.
Em alguns controles, você também pode adicionar uma aparência personalizada à interface gráfica do usuário do seu controle substituindo o método OnPaint da classe base. Para um botão estendido que rastreia cliques, pode-se substituir o método OnPaint para chamar a implementação base de OnPainte, em seguida, desenhar a contagem de cliques num canto da área cliente do controlo Button.
Controlos personalizados
Outra maneira de criar um controle é criar um substancialmente desde o início, herdando de Control. A classe Control fornece todas as funcionalidades básicas exigidas pelos controles, incluindo eventos de manipulação de mouse e teclado, mas nenhuma funcionalidade específica de controle ou interface gráfica.
Criar um controle herdando da classe Control requer mais pensamento e esforço do que herdar de UserControl ou de um controle existente do Windows Forms. Como uma grande quantidade de implementação é deixada para você, seu controle pode ter maior flexibilidade do que um controle composto ou estendido, e você pode personalizar seu controle para atender às suas necessidades exatas.
Para implementar um controle personalizado, você deve escrever código para o evento OnPaint do controle, que controla como o controle é desenhado visualmente. Você também deve escrever quaisquer comportamentos específicos da funcionalidade para o seu controlo. Você também pode substituir o método WndProc e manipular mensagens do Windows diretamente. Esta é a maneira mais poderosa de criar um controle, mas para usar essa técnica de forma eficaz, você precisa estar familiarizado com a API do Microsoft Win32®.
Um exemplo de um controle personalizado é um controle de relógio que duplica a aparência e o comportamento de um relógio analógico. A pintura personalizada é usada para fazer os ponteiros do relógio se moverem em resposta a eventos Tick de um componente interno Timer.
Experiência de design personalizada
Se você precisar implementar uma experiência de tempo de design personalizada, você pode criar seu próprio designer. Para controles compostos, derive sua classe de designer personalizada das classes ParentControlDesigner ou DocumentDesigner. Para controles estendidos e personalizados, derive sua classe de designer personalizada da classe ControlDesigner.
Use o DesignerAttribute para associar seu controle ao seu designer.
As seguintes informações estão desatualizadas, mas podem ajudá-lo.
.NET Desktop feedback