Trabalhando com Formulários - o que mudou ?

 

Os formulários foram a peça fundamental nas versões anteriores do Visual Basic. Desde de sua primeira versão os formulários sempre estiveram presentes no VB.

 

É claro que ao longo do tempo eles sofreram mudanças e melhoramentos até chegar a versão do VB 6.  É a partir desta versão que vou tomar como referência o último estágio dos formulários antes da plataforma .NET.

 

NO VB6 um formulário era uma 'entidade híbrida' ; assim um formulário em VB 6 podia tanto se comportar como uma classe como um tipo especial de objeto. Uma estranha dupla personalidade classe-objeto.

 

Por causa disto você podia usa o seguinte código com os formulários:

 

1- form1.Show  vbmodal   -  estou usando o método Show para exibir um formulário mesmo sem ter instanciado o objeto form1.

 

2- Dim frm as Form1         - Aqui estou criando uma instância de Form1 , neste caso estou criando o objeto frm a partir da classe formulários.

   Set frm = New Form1

 

No entanto no VB.NET posso dizer literalmente que "acabou a farra" . Agora os formulários são classes e você não pode mais usar o código - form1.Show  , se tentar vai obter um erro. Como Show é um método copia ele somente será valido para objetos criados a partir da classe. Agora no VB.NET para poder usar um formulário você deverá criar uma instância de um objeto formulário a partir da classe formulário. Assim :

 

Dim MeuFormulário As New Form1()

 

No VB.NET cada formulário possui propriedades internas ( como no VB6) e se você examinar as primeiras linhas de código em um formulário VB.NET vai deparar sempre com :

 

Public Class Form1

         Inherits System.Windows.Forms.Form

 

Sabe o que significa este código ? Significa que seu formulário herda(Inherits) todos os recursos de uma classe Form que pode ser encontrada no Namespace - System.Windows.Forms . Através da herança o objeto Form1 acessa todos os recursos de uma outra classe , assim sendo , Form1 obtêm as funções básicas de um formulário do tipo - System.Windows.Forms.Form.

 

Da teoria a prática

 

1 - Inicie um novo projeto no Visual Studio.NET com as seguintes características (sinta-se a vontade para alterar a seu gosto.)

  1. Project Types : Visual Basic Projects
  2. Templates : Windows Application
  3. Name : FormTeste1
  4. Location : c:\vbnet\FormTeste1

2 - O VB.NET cria como padrão o formulário - form1.vb - insira no formulário - form1.vb - uma caixa de texto e um botão de comando conforme a figura abaixo:

3- Insira um  novo formulário no seu projeto. No menu principal escolha Project | Add Windows Forms e na caixa de diálogo - Add New Item - marque Windows Form e clique no botão - Open -.

 

Pronto um formulário chamado - form2.vb - foi incluído no seu projeto.

 

4- No botão de comando - Formulário 1 - clique duas vezes e insira o código que vai tentar exibir o formulário form2.vb.

 

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

 

  Form2.show()

 

End Sub

 

Já vou adiantar : Não vai Funcionar !!!   O método Show não está nem disponível , pois o objeto Form2 não foi instanciado.

 

E agora ?? Como posso trabalhar com mais de um formulário no meu projeto VB ? Como valores entre formulários no meu projeto VB.NET ?

 

Vou mostrar como resolver este problema. Vamos lá...

 

Vamos incluir um modulo no projeto. No menu Project selecione Add Module e a seguir inclua o seguinte código no módulo :

 

Module Module1

    Public FForm1 As New Form1()

   Public FForm2 As New Form2()

 

Sub main()

    FForm1.ShowDialog()

End Sub

End Module

 

A seguir , no formulário form2.vb inclua uma caixa de texto e uma botão de comando com a propriedade Text igual a - Formulário2.

 

No formulário form1.vb , vamos incluir o código abaixo no evento Click do botão de comando.

 

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

  FForm2.Show()

  FForm2.TextBox1.Text = TextBox1.Text

End Sub

 

No formulário form2.vb inclua o código abaixo no evento Click do botão de comando.

 

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

   FForm1.TextBox1.Text = TextBox1.Text

   FForm2.Hide()

End Sub

 

Antes de executar o projeto vamos tornar o módulo incluído a primeira rotina a ser executada.

 

Na janela Solution Explorer clique com o botão direito no mouse sobre o nome do projeto e selecione a opção Properties

 

Na janela - Property Pages - selecione Module1 em Startup object:

 

Agora execute o projeto. O formulário form1.vb será exibido. Digite algo na caixa de texto do formulário e clique no botão de comando. O formulário form2.vb será exibido e na caixa de texto deste formulário você verá o texto digitado no formulário form1.vb. Passamos o texto entre os formulários :

 

 

Se você clicar no botão de comando do formulário form2.vb o formulário form2.vb será oculto , e , se você digitar algo na caixa de texto do formulário form2.vb , o texto será exibido no formulário form1.vb.

 

Este comportamento é devido ao código associado a cada botão de comando de cada formulário.  Então se você quiser trabalhar  formulários um projeto VB.NET - Windows forms siga os seguintes conselhos:

 

  1. Você precisa incluir um módulo do no seu projeto

  2. O modulo deverá ser o primeiro a ser executado quando o projeto rodar.

  3. Declare variáveis objetos do tipo formulário como públicas - Public.

  4. Instancie todos os objetos formulários.

  5. Lembre-se : No VB.NET formulários são classes.

Até o próximo artigo VB.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# ??

Quer aprender os conceitos da Programação Orientada a objetos ?

Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ?

  Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter

Referências:


José Carlos Macoratti