Criando menus em tempo de execução

 

No artigo VB.NET - Windows Forms -  vimos como é ficou mais fácil e intuitivo criar menus no Visual Basic em tempo de projeto , mas e se você precisar criar menus em tempo de execução ???  Calma , aqui esta o 'Chapolin Colorado' para te ajudar (não contavam com minha astúcia... )

 

Vou mostrar como criar um menu em tempo de execução no VB.NET . Por questão de simplicidade e de preguiça minha o nosso menu de exemplo terá uma opção - Arquivo - com duas sub-opções : Abrir e Sair . Vamos criar um projeto Windows Forms com um formulário...

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 : Menus
  4. Location : c:\vbnet\Menus

2- Altere a propriedade Text do formulário informando - Criando Menus em tempo de execução .

A aparência do seu form deverá ser a seguinte:

3- Vamos agora ao código que irá criar o menu que irá surgir ao executarmos o projeto:

I-) A primeira coisa a fazer é declarar uma variável do tipo MainMenu , pois a classe MainMenu é que representa a estrutura de um menu no fomrulário . (MainMenu é composta por objetos MenuItem que representam  os comandos individuais dos menus).

Clique duas vezes no formulário padrão - form1.vb - e no início do formulário declare a variável mMenu assim :

Public Class Form1

Inherits System.Windows.Forms.Form

Private mMenu As New System.Windows.Forms.MainMenu()

Declaramos a variável mMenu como do tipo MainMenu e a instanciamos.

Vamos agora usar o evento Load do formulário para criar os itens do menu :

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

 

Me.Menu = mMenu

 

  With mMenu.MenuItems.Add("mnuArquivo")

        .Text = "&Arquivo"

              With .MenuItems.Add("mnuAbrir", New EventHandler(AddressOf mnuAbrir_Click))

           .Text = "Abrir"

               End With

              With .MenuItems.Add("mnusep")         'o separador

           .Text = "-"

             End With

             With .MenuItems.Add("mnuSair", New EventHandler(AddressOf mnuAbrir_Click))

           .Text = "Sair"

             End With

End With

 

End Sub

 

Perceba que estamos usando o mesmo evento (mnuAbrir_Click) para os dois itens do menu , por isto temos que declarar o procedimento que captura qual item do menu foi clicado , eí-lo a seguir:

 

Private Sub mnuAbrir_Click(ByVal sender As Object, ByVal e As System.EventArgs)

 

Select Case CType(sender, MenuItem).Text

    Case "Abrir"

       MessageBox.Show("Menu opcao Abrir")

       Case "Sair"

       Me.Close()

End Select

 

End Sub

 

Agora vamos ver se deu certo... Executando o projeto deveremos obter:

 

 

E 'acabei de acabar' mais uma dica VB.NET para você , até a próxima ...

 

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