VB .NET - Criando um formulário baseado em outro formulário


Se você acompanhou a minha série de artigos - VB.NET  2005 - Criando uma aplicação completa : Locadora de Filmes I  notou que no segundo artigo da série foram criados formulários com base em formulários modelos previamente já criados.  Estou voltando ao assunto devido a algumas dúvidas e consultas sobre o mesmo.

A herança visual de formulários já existia na versão 1.1 da plataforma .NET mas na versão 2.0 ela sofreu algumas melhorias.

Vamos supor que você criou um formulário e planeja usá-lo como um modelo para criar outros formulários de forma que eles estendam as funcionalidades do formulário base. Como obter este resultado ?

Aplicando aqui os conceitos de herança podemos dizer que basta criar um relacionamento entre o formulário original (a classe base) e o formulário com o qual deseja estender as funcionalidades do formulário base.  Você pode fazer isto de duas formas básicas sendo que a mais simples é deixar o Visual Basic .NET (Visual Studio) fazer o serviço para você.

Vamos a um exemplo:

- Criando o formulário modelo (base)

Abra o Visual Basic 2005 Express Editon e crie um projeto Windows Forms.

A seguir inclua um no novo formulário Windows no projeto , clicando com o botão direito do mouse sobre o nome do projeto e selecionando a opção Add->New Item e selecionando a opção Windows Forms na janela Add New Item. Informe o nome Modelo.vb , conforme figura abaixo.

A seguir vamos incluir os componentes que achamos que serão comuns aos formulários que serão criados a partir deste modelo. Para não complicar vou definir o formulário modelo contendo apenas um controle Label e um controle GroupBox conforme figura abaixo:

Altere as seguintes propriedades do formulário modelo na janela de propriedades:
  • Name  = FormularioModelo
  • BackColor = 192; 192; 255
  • ControlBox = False
  • Font = Arial; 12pt; style=Bold
  • KeyPreview = True
  • Text = FormularioModelo

Altere as seguintes  propriedades do controle Label1 :

  • Anchor = Top, Left, Right
  • BackColor = Navy
  • Font = Arial; 18pt; style=Bold
  • ForeColor = White
  • Modifiers = Protected

Defina a propriedade Anchor do controle GroupBox1 como sendo igual a : Top, Bottom, Left, Right

Nota:  Se você não alterar a propriedade Modifiers  para Protected não vai conseguir alterar os controles no formulário filho.

Modificadores usados no VB.NET
Public: Acesso sem restrições;
Private: Nenhum acesso externo e também não pode ser herdado;
Friend: Somente acesso em um mesmo local, Ex: Class library, Windows Aplication...
Protected: Sem acesso externo e pode ser herdado.

Criando os formulários a partir do Modelo

Vou mostrar agora como você pode criar formulários a partir do formulário modelo acima. Inclua um novo formulário Windows com o nome de Clientes.vb da seguinte forma:

Ao término do processo você terá o formulário clientes.vb com a mesma identidade visual do seu formulário Modelo.vb. Vamos dar uma espiada no código do formulário... mas antes...

Na janela Solution Explorer clique no ícone Show All Files para que todos os arquivos que compõem a solução sejam exibidos.

Clique no sinal de mais ao lado do formulário clientes.vb e clique duas vezes sobre o item Clientes.Designer.vb

Isto irá exibir o código do formulário criado pelo VB2005.

 

Vejamos agora o código gerado:

<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Class clientes
    Inherits videoLocadora.Modelo

    'Form overrides dispose to clean up the component list.
    <System.Diagnostics.DebuggerNonUserCode()> _
    Protected Overrides Sub Dispose(ByVal disposing As Boolean)
        If disposing AndAlso components IsNot Nothing Then
            components.Dispose()
        End If
        MyBase.Dispose(disposing)
    End Sub

Note que o código em negrito que eu fiz questão de destacar indica que o formulário clientes herda (inherits) do formulário Modelo. (O nome videolocadora refere-se apenas ao nome do projeto que eu usei.)

Nas versões anteriores do VB.NET você tinha que criar uma instância do formulário para usá-lo depois. Lembra ???
Dim frm As New Form2
frm.Show()	

O Visual Basic 2005 agora oferece suporte a instâncias padrão, permitindo que você use a seguinte sintaxe(Já conhecida dos programadores VB6) :

Form2.Show()	

Para ficar bem documentado é mais prudente usar a instância a partir da coleção My.Forms,  assim :

My.Forms.Form2.Show()

Todos os formulários incluídos em um projeto usam herança e por padrão novos formulários herdam  de System.Windows.Forms.Form.

Se alterarmos manualmente a instrução inherits indicando o nome do formulário base pré-existente e a seguir reconstruindo o projeto e iremos obter o mesmo resultado que acima.

Este recurso pode lhe ajudar muito quando existirem muitos formulários com funcionalidades similares a serem criados.

Até o próximo artigo .NET

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

 

             Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter

Referências:


José Carlos Macoratti