sábado, 7 de maio de 2011

Criar um menu de contexto em run-time

Que tal criar um menu de contexto (aquele menu suspenso que aparece ao clicar com o botão direito do mouse sobre algum controle) em tempo de execução em uma aplicação Windows Forms? Pois é, a idéia é simplesmente criar o menu e detectar a opção que foi  “clicada” pelo usuário em linguagem C#.
Abra o Visual Studio e crie um novo projeto (File > New > Project) do tipo Windows Forms Application em linguagem C#.


Vamos utilizar o formulário Form1 que foi criado automaticamente pelo VS. Dê um duplo-clique sobre o Form1 para termos acesso ao View Code, e escreva o trecho de código abaixo.

private void Form1_Load(object sender, EventArgs e)
{
    ContextMenuStrip menu = new ContextMenuStrip();
    menu.Items.Add("Calculadora");
    menu.Items.Add("Bloco de Notas");
    this.ContextMenuStrip = menu;
    menu.ItemClicked += new ToolStripItemClickedEventHandler(menu_ItemClicked);
}

Até o momento, criamos um objeto da classe ContextMenuStrip, que nada mais é do que o nosso menu de contexto. Em seguida, acrescentamos alguns sub-menus, que são as opções que aparecerão para o usuário escolher. Assim que o menu recebe um clique, um Delegate (que é uma referência para um método) será responsável por executar um método chamado menu_ItemClicked, cuja implementação segue abaixo:

void menu_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
{
    string comando = string.Empty;
    switch (e.ClickedItem.Text)
    {
        case "Calculadora":
            comando = "calc.exe";
            break;
        case "Bloco de Notas":
            comando = "notepad.exe";
            break;
    }
    if (!comando.Equals(""))
        System.Diagnostics.Process.Start(comando);
}

Com base na opção selecionada, um programa (calculadora ou bloco de notas) será iniciado sobre o Form da aplicação. Pressione a tecla de atalho F5 para compilar e testar a aplicação.


Espero que tenham gostado. 
Até a próxima!

Nenhum comentário:

Postar um comentário

Deixe aqui seu comentário