Partilhar via


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

Com o C#, pode-se criar poderosos controles personalizados através da herança. Através da herança, você pode criar controles que mantêm toda a funcionalidade inerente dos controles padrão do Windows Forms, mas também incorporam a funcionalidade personalizada. Neste passo a passo, você criará um controle herdado simples chamado ValueButton. Esse botão herdará a funcionalidade do controle Button padrão do Windows Forms e exporá uma propriedade personalizada chamada ButtonValue.

Criar o projeto

Ao criar 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 esteja no namespace correto.

Para criar a biblioteca de controle ValueButtonLib e o controle ValueButton

  1. No Visual Studio, crie um novo Windows Forms Control Library projeto 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 do mouse UserControl1.cse, em seguida, escolha Renomear no menu de atalho. Altere o nome do arquivo para ValueButton.cs. Clique no botão Sim quando lhe for perguntado se pretende mudar o nome de 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 e public partial class ValueButton, e altere o tipo do qual este controlo herda, de UserControl para Button. Isso permite que seu controle herdado herde todas as funcionalidades do controle Button.

  5. No Explorador de Soluções , abra o nó ValueButton.cs para mostrar o arquivo de código gerado pelo designer, ValueButton.Designer.cs. Abra este arquivo no Code Editor.

  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 Guardar tudo para guardar 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 pode modificar sua aparência no designer. Sua representação visual será exatamente a mesma 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 que são 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 Value

  1. No Explorador de Soluções, clique com o botão direito em ValueButton.cse, em seguida, clique em Ver 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 private varValuee a instrução set define o valor da variável private usando a palavra-chave value.

  3. No menu Arquivo, escolha Guardar tudo para guardar o projeto.

Testar o controlo

Os controlos 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 construindo (compilando-o). Nesta seção, você criará seu controle e o testará em um Windows Form.

Para construir o teu controle

No menu Build, clique em Build Solution. A compilação deve ser bem-sucedida 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 do nó Visual C# e clique em Windows Forms Application.

  3. Na caixa Nome, digite Teste.

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

  5. Clique na guia 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 Explorador de Soluções, clique com o botão direito do mouse em Teste e selecione Criar.

Para adicionar seu controle ao formulário

  1. No Explorador de Soluções, clique com o botão direito do mouse em Form1.cs e escolha Ver Designer no menu de atalho.

  2. Na Toolbox, selecione ValueButtonLib Components. Clique duas vezes ValueButton.

    Um ValueButton aparece no formulário.

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

  4. Na janela Properties, 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.

  5. Defina a propriedade ButtonValue como 5.

  6. Na aba Todos os Formulários do Windows do Caixa de Ferramentas, clique duas vezes no Rótulo para adicionar um controlo ao seu formulário.

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

  8. Clique duas vezes em valueButton1.

    O Code Editor abre para o 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 em Testee escolha Definir como Projeto de Inicialização no menu de atalho.

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

    Form1 aparece.

  12. Clique em valueButton1.

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

Ver também