Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Com o Windows Forms, você pode criar novos controles ou modificar controles existentes por meio da 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 controle base
A Control classe é a classe base para controles do Windows Forms. Ele fornece a infraestrutura necessária para exibição visual em aplicativos do Windows Forms e fornece os seguintes recursos:
- Expõe um identificador 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, BackColore HeightWidth.
Como grande parte da infraestrutura é fornecida pela classe base, é relativamente fácil desenvolver seus próprios controles do Windows Forms.
Criar seu próprio controle
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 controle de usuário herdando de System.Windows.Forms.UserControl. |
|
Estenda um controle herdando de um controle específico do Windows Forms. |
|
Crie um controle personalizado herdando system.Windows.Forms.Control. |
Controles do usuário
Um controle de usuário é uma coleção de controles do Windows Forms apresentados como um único controle para o consumidor. Esse tipo de controle é conhecido como um controle composto . Os controles contidos são chamados controles constituintes.
Um controle de usuário contém toda a funcionalidade inerente associada a cada um dos controles do Windows Forms contidos e permite que você exponha e associe seletivamente suas propriedades. Um controle de usuário também fornece uma grande quantidade de funcionalidade padrão de manipulação de teclado 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 DataGridView controle para exibir os campos de banco de dados, uma BindingSource associação para lidar com uma fonte de dados e um BindingNavigator controle para percorrer os registros. Você pode expor seletivamente as propriedades de associação de dados e empacotar e reutilizar todo o controle de aplicativo para aplicativo. Para obter um exemplo desse tipo de controle de usuário, consulte Como aplicar atributos em controles do Windows Forms.
Para obter mais informações, consulte Visão geral do controle de usuário.
Controles 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 do 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 Button controle que rastreia 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 OnPaint método da classe base. Para um botão estendido que rastreia cliques, você pode substituir o método OnPaint para chamar a implementação base de OnPaint e, em seguida, desenhar a contagem de cliques em um canto da área cliente do controle Button.
Para obter um exemplo de extensão de um controle, consulte Estender um controle existente.
Controles personalizados
Outra maneira de criar um controle é desenvolvê-lo substancialmente desde o início, herdando de Control. A Control classe fornece toda a funcionalidade básica exigida 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 reflexão e esforço do que herdar da classe 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 adaptar seu controle para atender às suas necessidades exatas.
Para implementar um controle personalizado, você deve escrever código para o OnPaint método do controle, que controla como o controle é desenhado visualmente. Você também deve escrever comportamentos específicos da funcionalidade para seu controle. Você também pode substituir o método e manipular mensagens do WndProc Windows diretamente. Essa é a maneira mais poderosa de criar um controle, mas para usar essa técnica com eficiência, 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 é invocada para fazer com que as mãos do relógio se movam em resposta a Tick eventos de um componente interno Timer .
Para obter mais informações, consulte Criar um controle personalizado simples.
Controles ActiveX
Embora a infraestrutura do Windows Forms tenha sido otimizada para hospedar controles do Windows Forms, você ainda pode usar controles ActiveX. Há suporte para essa tarefa no Visual Studio. Para obter mais informações, consulte Como adicionar controles ActiveX ao Windows Forms.
Aviso
Os controles ActiveX não têm suporte total no .NET. Os controles ActiveX permanecem totalmente compatíveis com o .NET Framework.
Experiência de design personalizado
Se você precisar implementar uma experiência personalizada de tempo de design, poderá criar seu próprio designer. Para controles compostos, derive sua classe de designer personalizada da classe ParentControlDesigner ou da classe DocumentDesigner. Para controles estendidos e personalizados, derive sua classe de designer personalizada da ControlDesigner classe.
Use o DesignerAttribute para associar seu controle ao designer.
As informações a seguir estão desatualizadas, mas podem ajudá-lo.
.NET Desktop feedback