Compartilhar via


Passo a passo: herdar de um controle do Windows Forms com C#

Com C#, você pode criar controles personalizados avançados por meio de herança. Por meio da herança, você pode criar controles que retêm toda a funcionalidade inerente dos controles padrão do 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 de Button padrão do Windows Forms e exporá uma propriedade personalizada chamada ButtonValue.

Criar o projeto

Ao criar um novo projeto, especifique seu nome para definir o namespace raiz, o nome do assembly e o nome do projeto e garantir que o componente padrão estará no namespace correto.

Para criar a biblioteca de controle ValueButtonLib e o controle ValueButton

  1. No Visual Studio, crie um projeto de Biblioteca de Controles 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 chamados ValueButton, você poderá especificar seu componente ValueButton usando ValueButtonLib.ValueButton. Para obter mais informações, consulte Namespaces.

  2. No Gerenciador de Soluções , clique com o botão direito em UserControl1.cse escolha Renomear no menu de atalho. Altere o nome do arquivo para ValueButton.cs. Clique no botão Sim quando for perguntado se deseja renomear todas as referências para o elemento de código 'UserControl1'.

  3. No Gerenciador de Soluções, clique com o botão direito do mouse em ValueButton.cs e selecione Exibir Código.

  4. Localize a linha de instrução class, public partial class ValueButton, e altere o tipo do qual esse controle herda de UserControl para Button. Isso permite que seu controle herdado herde toda a funcionalidade do controle Button.

  5. No Gerenciador de Soluções, abra o nó ValueButton.cs para exibir o arquivo de código gerado pelo designer, ValueButton.Designer.cs. Abra este arquivo no editor de código .

  6. Localize o método InitializeComponent e remova a linha que atribui a propriedade AutoScaleMode. Essa propriedade não existe no controle Button.

  7. No menu Arquivo, escolha Salvar Tudo para salvar o projeto.

    Observação

    Um designer visual não está mais disponível. Como o controle Button faz sua própria pintura, você não consegue modificar sua aparência no designer. Sua representação visual será exatamente igual à da classe da qual herda (ou seja, Button) a menos que seja modificada no código. Você ainda pode adicionar componentes, que não têm elementos de interface do usuário, à superfície de design.

Adicionar uma propriedade ao seu controle herdado

Um possível uso de controles herdados do Windows Forms é a criação de controles idênticos na aparência dos controles padrão do Windows Forms, mas expõem propriedades personalizadas. Nesta seção, você adicionará uma propriedade chamada ButtonValue ao seu controle.

Para adicionar a propriedade de valor

  1. No Gerenciador de Soluções, clique com o botão direito do mouse em ValueButton.cse depois clique em Exibir Código no menu de atalho.

  2. Localize a instrução class. Imediatamente após o {, digite o seguinte código:

    // 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 pelos quais a propriedade ButtonValue é armazenada e recuperada. A instrução get define o valor retornado para o valor armazenado na variável privada varValuee a instrução set define o valor da variável privada usando a palavra-chave value.

  3. 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ê deve fornecer um projeto de teste para que ele seja executado. Você também deve tornar seu controle acessível ao projeto de teste compilando-o. Nesta seção, você criará seu controle e o testará em um Formulário do Windows.

Para compilar seu controle

No menu Compilar, clique em Compilar Solução. O build deve ser bem-sucedido sem erros ou avisos do compilador.

Para criar um projeto de teste

  1. No menu Arquivo, aponte para Adicionar e clique em Novo Projeto para abrir a caixa de diálogo Adicionar Novo Projeto .

  2. Selecione o nó Windows, abaixo de Visual C# e clique em Aplicativo dos Windows Forms.

  3. Na caixa Nome, insira Teste.

  4. No Gerenciador de Soluções, clique com o botão direito do mouse no nó Referências do seu projeto de teste, em seguida, selecione Adicionar Referência no menu de atalho para exibir a caixa de diálogo Adicionar Referência.

  5. 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.

  6. No Gerenciador de Soluções, clique com o botão direito do mouse em Testar e selecione Compilar.

Para adicionar seu controle ao formulário

  1. 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.

  2. Na Caixa de Ferramentas, selecione Componentes ValueButtonLib. Clique duas vezes em ValueButton.

    Um ValueButton aparece no formulário.

  3. Clique com o botão direito do mouse em ValueButton e selecione Propriedades no menu de atalho.

  4. Na janela Propriedades, examine as propriedades desse controle. Observe que elas são idênticas às propriedades expostas por um botão padrão, exceto que há uma propriedade adicional, ButtonValue.

  5. Defina a propriedade ButtonValue como 5.

  6. Na guia Todos os Windows Forms na Caixa de Ferramentas, clique duas vezes em Rótulo para adicionar um controle Label ao formulário.

  7. Realoque o rótulo para o centro do formulário.

  8. Clique duas vezes em valueButton1.

    O Editor de Códigos é aberto no evento valueButton1_Click.

  9. Insira a seguinte linha de código.

    label1.Text = valueButton1.ButtonValue.ToString();
    
  10. 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.

  11. No menu Depurar , selecione Iniciar Depuração.

    Form1 é exibido.

  12. Clique em valueButton1.

    O numeral '5' é exibido em label1, demonstrando que a propriedade ButtonValue de seu controle herdado foi passada para label1 por meio do método valueButton1_Click. Assim, o controle ValueButton herda toda a funcionalidade do botão padrão do Windows Forms, mas expõe uma propriedade personalizada adicional.

Consulte também