Formulários : Conceitos Básicos

Houve muitas mudanças na , vamos chamar assim , nova versão do VB : o VB .NET. Na verdade para dar suporte a orientação a objetos(OOP) , threads , encadeamento  e outras características o velho e bom VB teve que passar por profundas alterações.

Se você esta começando a usar o VB .NET , já percebeu que não pode continuar a usar a ferramenta da mesma forma que usava o VB6/VB5 ; você tem que mudar a sua  mentalidade e a forma de como costumava a programar. Para começar tudo no VB .NET são objetos , sim , eu disse tudo. 

Neste artigo eu vou mostrar alguns dos novos conceitos por trás de um dos componentes básicos de qualquer aplicação VB : os formulários. Vou mostrar como são realizadas algumas das tarefas básicas relacionadas a formulários que você fazia no VB e como podemos fazê-las no VB .NET.(algumas delas são possíveis somente no VB .NET)

Trabalhando com múltiplos formulários no VB .NET

  1. Inicie um novo Projeto no VS .NET
  2. Crie um novo projeto do tipo Windows Application
  3. No menu Project vamos incluir um novo formulário - form2.vb - na opção : Add Windows Form

  1. No formulário padrão do projeto - form1.vb - inclua um botão de comando e no seu evento Click insira o seguinte código:

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

    Dim frm2 As New Form2()

   frm2.Show()

End Sub

5- O nosso projeto deverá conter dois formulários : form1 e form2 e o formulário deverá ter o seguinte layout :

6- Se você rodar o projeto e clicar no botão - button1 - 4 vezes irá perceber que teremos 4 formulários - form2.vb criados e exibidos conforme abaixo :

Como evitar este comportamento indesejável ?

7- Agora altere o código conforme mostrado abaixo:

Private frm2 As Form2

 

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

   If IsNothing(frm2) = False Then

           'o formulário esta ativo

       MsgBox("O formulário já esta sendo exibido !", MsgBoxStyle.Exclamation)

     Else

       frm2 = New Form2()

       frm2.Show()

     End If

End Sub

8- Ao executar novamente o projeto e clicar no botão - Button1 - mais de uma vez , a mensagem irá informar que o formulário já esta sendo exibido:

Passando valores de variáveis entre formulários

A maneira mais fácil de fazer isto é declarar a variável como pública . (como você fazia antes)

No form1.vb declare a variável : variavel_formulario_frm1

Public variavel_formulario_frm1 As String

No formulário form2.vb podemos usar a variável assim :

Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

     Dim frm1 As Form1

   frm1.variavel_formulario_frm1 = "Estou usando a variavel do form1"

End Sub

Como esconder/mostrar um formulário de outro formulário

Em um projeto com dois formulários : form1.vb e form2.vb .

No formulário form1.vb inclua um botão de comando e o código conforme abaixo:

Private segundoform As New Form2()

 

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    segundoform.MinhaRotina(Me)

End Sub

 

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

    segundoform.Show()

    Me.Hide()

End Sub

No formulário form2.vb inclua o botão de comando e o código conforme a seguir :

Private primeiro_formulario As Form1

 

Public Sub MinhaRotina(ByRef frm As Form1)

   primeiro_formulario = frm

End Sub

 

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

   primeiro_formulario.Show()

   Me.Hide()

End Sub

Ao executar o projeto , se você clicar no botão de comando - button1 - do formulário - form1.vb - o segundo formulário será exibido e o primeiro será oculto. O mesmo ocorre com o formulário dois ao se clicar no botão - button1 - do formulário - form2.vb .

Como criar um formulário embutido em outro. (Embedded form)

No VB .NET podemos usar um formulário como um container , sem precisar usar  um formulário do tipo MDI. Como os formulários são derivados da classe Control , eles podem ser criados como controles em tempo de execução. Podemos então incluir um formulário dentro de outro formulário. Veja como fazer isto:

- Crie no novo projeto do tipo WIndows Application e inclua um novo formulário - form2.vb. Nosso projeto terá dois formulários : form1.vb e form2.vb.  Vamos então 'embutir' o formulário form2.vb no formulário form1.vb.

- No formulário - form1.vb - inclua um botão de comando e no seu evento click insira o seguinte código:

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

     Dim f As New Form2()

   f.TopLevel = False

     Me.Controls.Add(f)

   f.show()

End Sub

Declaramos a variável objeto f do tipo do formulário que desejamos embutir formulário atual - form1.vb:

- Executando o projeto e clicando no botão de comando - button1 - vamos ver que o formulário form2.vb será criado dentro do formulário - form1.vb

Isto é possível devido a propriedade TopLevel . Atribuindo a ela o valor False e incluindo o controle - f - derivado do formulario form2.vb no controle atual teremos o formulário embutido.

Usando formulários MDI

Os formulários MDI - Multiple Document Interface - são muito usados , pois fornecem uma interface onde é possível abrir um formulário Principal (PAI) e a partir deste abrir diversos formulários filhos(Child) que estarão contidos no formulário PAI. Como fazer isto no VB .NET ?

No VB6/VB5 você podia criar um formulário MDI no seu projeto a partir do menu Project opção - Add MDI form.

No VB.NET basta alterar a propriedade IsMDIContainer do formulário para True , e pronto ! , temos um formulário MDI.

Vou criar um exemplo onde teremos 3 formulários : Form_MDI_Pai, Form_filho1 e form_filho2 , onde o primeiro será o container , ou o formulário Pai , e dois restantes serão os formulários Filhos.

- Crie um novo projeto Windows Form e altere sua propriedade IsMDIContainter para True , incluindo a seguir dois botões de comando - Criar formulários FILHO1 e Criar formulários FILHO2 , conforme o layout ao lado:

Nota : Percebeu que você agora pode incluir controles em  um formulário MDI Pai...

 

Para indicar que um formulário é FILHO de um formulário MDI Pai basta de definir sua propriedade MdiParent = Me , indicando que ele pertence ao formulário MDI Pai atual.

No evento Click do botão de comando - Criar Formulários Filhos - insira o código abaixo :

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

 

  Dim frmFilho_1 As New form_filho1()

  frmFilho_1.MdiParent = Me

  frmFilho_1.Show()

 

End Sub

 

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

 

  Dim frmFilho_2 As New form_filho2()

  frmFilho_2.MdiParent = Me

  frmFilho_2.Show()

 

End Sub

Executando o projeto e clicando em cada um dos botões de comando , vamos ver a figura como abaixo exibindo os formulários FILHOS exibidos:

Para saber mais veja a segunda parte do artigo sobre formulários no  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