Compartilhar via


Como herdar de controles existentes do Windows Forms

Se você quiser estender a funcionalidade de um controle existente, poderá criar um controle derivado de um controle existente por meio da herança. Ao herdar de um controle existente, você herda toda a funcionalidade e as propriedades visuais desse controle. Por exemplo, se você estivesse criando um controle herdado de Button, seu novo controle teria aparência e agiria exatamente como um controle de Button padrão. Em seguida, você pode estender ou modificar a funcionalidade do novo controle por meio da implementação de métodos e propriedades personalizados. Em alguns controles, você também pode alterar a aparência visual do controle herdado sobrescrevendo o método OnPaint.

Para criar um controle herdado

  1. No Visual Studio, crie um novo projeto de Windows Forms Application.

  2. No menu do Projeto , escolha Adicionar Novo Item.

    A caixa de diálogo Adicionar Novo Item é exibida.

  3. Na caixa de diálogo Adicionar Novo Item, clique duas vezes em Controle Personalizado.

    Um novo controle personalizado é adicionado ao seu projeto.

  4. Se você estiver usando:

    • Visual Basic, na parte superior do Gerenciador de Soluções, clique em Mostrar Todos os Arquivos. Expanda CustomControl1.vb e abra CustomControl1.Designer.vb no Editor de Código.
    • C#, abra CustomControl1.cs no Editor de Código.
  5. Localize a declaração de classe, que herda de Control.

  6. Altere a classe base para o controle do qual você deseja herdar.

    Por exemplo, se você quiser herdar de Button, altere a declaração de classe para o seguinte:

    Partial Class CustomControl1
        Inherits System.Windows.Forms.Button
    
    public partial class CustomControl1 : System.Windows.Forms.Button
    
  7. Se você estiver usando o Visual Basic, salve e feche CustomControl1.Designer.vb. Abra CustomControl1.vb no Editor de Código.

  8. Implemente quaisquer métodos ou propriedades personalizadas que seu controle incorporará.

  9. Se você quiser modificar a aparência gráfica do controle, substitua o método OnPaint.

    Nota

    Sobrescrever OnPaint não permitirá modificar a aparência de todos os controles. Esses controles que têm toda a pintura feita pelo Windows (por exemplo, TextBox) nunca chamam seu método OnPaint e, portanto, nunca usarão o código personalizado. Consulte a documentação da Ajuda para o controle específico que você deseja modificar para ver se o método OnPaint está disponível. Para obter uma lista de todos os controles do Windows Forms, consulte Controles para usar emdo Windows Forms. Se um controle não tiver OnPaint listado como um método membro, você não poderá alterar sua aparência substituindo esse método. Para obter mais informações sobre pintura personalizada, consulte Pintura e Renderização de Controle Personalizado.

    Protected Overrides Sub OnPaint(ByVal e As _
       System.Windows.Forms.PaintEventArgs)
       MyBase.OnPaint(e)
       ' Insert code to do custom painting.
       ' If you want to completely change the appearance of your control,
       ' do not call MyBase.OnPaint(e).
    End Sub
    
    protected override void OnPaint(PaintEventArgs pe)
    {
       base.OnPaint(pe);
       // Insert code to do custom painting.
       // If you want to completely change the appearance of your control,
       // do not call base.OnPaint(pe).
    }
    
  10. Salve e teste seu controle.

Consulte também