Demonstra Passo a passo: Herdar de um controle do Windows Forms com C#
Com o C#, você pode criar poderosos controles personalizados por meio de herança. Com a herança, você é capaz de criar controles que mantêm todas as funcionalidades inerentes de controles padrão dos Windows Forms, mas também incorporam funcionalidades personalizadas. Neste passo a passo, você criará um controle herdado simples chamado ValueButton
. Esse botão herdará a funcionalidade do controle padrão do Windows Forms Button e exporá uma propriedade personalizada chamada ButtonValue
.
Criar o projeto
Quando cria um novo projeto, você especifica seu nome para definir o namespace raiz, o nome do assembly e o nome do projeto e para garantir que o componente padrão estará no namespace correto.
Para criar a biblioteca de controle ValueButtonLib e o controle ValueButton
No Visual Studio, crie um novo projeto de biblioteca de controle do Windows Forms e nomeie-o ValueButtonLib.
O nome do projeto,
ValueButtonLib
, também é atribuído ao namespace raiz por padrão. O namespace raiz é usado para qualificar os nomes dos componentes no assembly. Por exemplo, se dois assemblies fornecerem componentes chamadosValueButton
, você poderá especificar o componenteValueButton
usandoValueButtonLib.ValueButton
. Para obter mais informações, consulte Namespaces.No Gerenciador de Soluções, clique com o botão direito do mouse em UserControl1.cs e escolha Renomear no menu de atalho. Altere o nome do arquivo para ValueButton.cs. Clique no botão Sim quando solicitado se desejar renomear todas as referências ao elemento de código '
UserControl1
'.No Gerenciador de Soluções, clique com o botão direito do mouse em ValueButton.cs e selecione Exibir Código.
Localize a
class
linhapublic partial class ValueButton
de instrução e altere o tipo do qual esse controle herda de UserControl para Button. Isso permite que o controle herdado herde toda a funcionalidade do Button controle.No Gerenciador de Soluções, abra o nó ValueButton.cs para exibir o arquivo de código gerado pelo designer, ValueButton.Designer.cs. Abra esse arquivo no Editor de Códigos.
Localize o
InitializeComponent
método e remova a linha que atribui a AutoScaleMode propriedade. Essa propriedade não existe no Button controle.No menu Arquivo, escolha Salvar Tudo para salvar o projeto.
Observação
Um designer visual não está mais disponível. Como o Button controle faz sua própria pintura, você não pode modificar sua aparência no designer. Sua representação visual será exatamente a mesma da classe da qual ele herda (ou seja, Button) a menos que seja modificada no código. Você ainda pode adicionar componentes, que não têm uma interface do usuário, à superfície de design.
Adicionar uma propriedade ao controle herdado
Um uso possível dos controles herdados dos Windows Forms é a criação de controles que são idênticos em termos de aparência a controles padrão dos Windows Forms, mas que expõem propriedades personalizadas. Nesta seção, você adicionará uma propriedade chamada ButtonValue
ao controle.
Para adicionar a propriedade de valor
No Gerenciador de Soluções, clique com o botão direito do mouse em ValueButton.cs e, depois, clique em Exibir Código no menu de atalho.
Localize a instrução
class
. Cole o código a seguir imediatamente depois de{
:// Creates the private variable that will store the value of your // property. private int varValue; // Declares the property. public int ButtonValue { // Sets the method for retrieving the value of your property. get { return varValue; } // Sets the method for setting the value of your property. set { varValue = value; } }
Esse código define os métodos segundo os quais a propriedade
ButtonValue
é armazenada e recuperada. A instruçãoget
define o valor retornado como o valor que é armazenado na variável particularvarValue
e a instruçãoset
define o valor da variável particular usando a palavra-chavevalue
.No menu Arquivo, escolha Salvar Tudo para salvar o projeto.
Testar o controle
Controles não são projetos autônomos; eles devem ser hospedados em um contêiner. Para testar seu controle, você precisa fornecer um projeto de teste em que ele será executado. Você também precisa tornar seu controle acessível para o projeto de teste compilando-o. Nesta seção, você compilará seu controle e o testará em um Windows Form.
Para compilar seu controle
No menu Compilar, clique em Compilar Solução. O build deve ser bem-sucedido, sem avisos ou erros do compilador.
Para criar um projeto de teste
No menu Arquivo, aponte para Adicionar e clique em Novo Projeto para abrir a caixa de diálogo Adicionar Novo Projeto.
Selecione o nó Windows, abaixo de Visual C# e clique em Aplicativo dos Windows Forms.
Na caixa Nome, digite Test.
No Gerenciador de Soluções, clique com o botão direito do mouse no nó Referências de seu projeto de teste e selecione Adicionar Referência no menu de atalho para exibir a caixa de diálogo Adicionar Referência.
Clique na guia rotulada como Projetos. Seu projeto ValueButtonLib será listado em Nome do projeto. Clique duas vezes no projeto para adicionar a referência ao projeto de teste.
No Gerenciador de Soluções, clique com o botão direito do mouse em Testar e selecione Compilar.
Para adicionar o controle ao formulário
No Gerenciador de Soluções, clique com o botão direito do mouse em Form1.cs e selecione Designer de Modo de Exibição no menu de atalho.
Na Caixa de Ferramentas, selecione Componentes ValueButtonLib. Clique duas vezes em ValueButton.
Um ValueButton aparece no formulário.
Clique com o botão direito do mouse em ValueButton e selecione Propriedades no menu de atalho.
Na janela Propriedades, examine as propriedades desse controle. Observe que eles são idênticos às propriedades expostas por um botão padrão, exceto que há uma propriedade adicional, ButtonValue.
Defina a propriedade ButtonValue como 5.
Na guia Todos os Windows Forms da Caixa de Ferramentas, clique duas vezes em Rótulo para adicionar um Label controle ao formulário.
Reposicione o rótulo no centro do formulário.
Clique duas vezes em
valueButton1
.O Editor de Códigos é aberto no evento
valueButton1_Click
.Insira a seguinte linha de código.
label1.Text = valueButton1.ButtonValue.ToString();
No Gerenciador de Soluções, clique com o botão direito do mouse em Teste e escolha Definir como Projeto de Inicialização no menu de atalho.
No menu Depuração, selecione Iniciar Depuração.
Form1
é exibido.Clique no
valueButton1
.O numeral "5" é exibido em
label1
, demonstrando que a propriedadeButtonValue
de seu controle herdado foi passada paralabel1
por meio do métodovalueButton1_Click
. Portanto, seu controleValueButton
herda todas as funcionalidades do botão padrão dos Windows Forms, mas expõe uma propriedade adicional personalizada.
Confira também
.NET Desktop feedback