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
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 StringNo 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:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
VB .NET - Passando valores entre formulários - Macoratti.net