Visual – ContextMenu, ContextMenuStrip – MouseUp – MouseButtons – C#

Publicado: 28 de março de 2014 em C#

PopUpMenu

Um menu de contexto ou um menu pop-up é um menu em uma interface gráfica do usuário (GUI) que aparece em cima de interação do usuário, como uma operação de clique com o botão direito do mouse. Um menu de contexto oferece um conjunto limitado de opções que estão disponíveis no estado atual, ou contexto, do sistema operacional ou aplicativo. Normalmente, as opções disponíveis são as ações relacionadas com o objeto selecionado.

Os menus de contexto foram introduzidos no ambiente Smalltalk do computador Xerox Alto, onde eram chamados menus pop-up. O sistema operacional NEXTSTEP desenvolveu a ideia, incorporando a funcionalidade em que o botão do meio ou o da direita traziam o menu principal na posição do mouse, eliminando a necessidade de mover o ponteiro por toda a tela. Esse menu principal era vertical e mudava de acordo com o texto da operação do sistema.

ContextMenu

Representa um menu de atalho. Embora ContextMenuStrip substitui e adiciona funcionalidade para o ContextMenu  para controle de versões anteriores, ContextMenu é mantido para compatibilidade com versões anteriores e o uso futuro, se você escolher.

MouseUp

É um evento que ocorre quando o ponteiro do mouse está sobre o controle e um botão do mouse é liberado.

MouseButtons

Especifica constantes que definem qual botão do mouse foi pressionado.

Exemplo:

Neste exemplo criamos um menu de contexto e o associamos a um formulário e usamos suas constantes e eventos para manipular suas funcionalidades.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Popup
{
    public partial class Form1 : Form
    {
        // Declara componentes
        Label titulo;
        Label rodape;
        ContextMenu pMenu;
        
        // Declara variaveis
        string acao = "Você clicou no: ";
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Shown(object sender, EventArgs e)
        {
            // Cria componentes
            titulo = new Label();
            rodape = new Label();

            Form1.ActiveForm.Text = "Desenvolvimento Aberto - PopUpMenu";

            titulo.Text = "Clique com o botão direito no formulario";
            rodape.Text = acao;

            // Muda tamanho dos componentes
            titulo.Size = new Size(300, 20);
            rodape.Size = new Size(300, 20);

            // Posiciona componentes
            titulo.Location = new Point(5, 20);
            rodape.Location = new Point(5, 230);

            // Cria menu popup
            pMenu = new ContextMenu();

            // Cria evento do mouse
            this.MouseUp += new System.Windows.Forms.MouseEventHandler(this.Form1_MouseUp);

            // Cria eventos do menu
            pMenu.MenuItems.Add("Item 1", new System.EventHandler(this.item1_clicked));
            pMenu.MenuItems.Add("item 2", new System.EventHandler(this.item2_clicked));
            pMenu.MenuItems.Add("-");
            pMenu.MenuItems.Add("item 3", new System.EventHandler(this.item3_clicked));

            // Adiciona componentes no formulario
            Form1.ActiveForm.Controls.Add(titulo);
            Form1.ActiveForm.Controls.Add(rodape);

            // Referencia popupmenu ao formulario
            this.ContextMenu = pMenu;


        }

        // Eventos dos itens do menu
       private void item1_clicked(object sender, EventArgs e)
        {
            rodape.Text = acao + "Item 1";
        }
        private void item2_clicked(object sender, EventArgs e)
        {
            rodape.Text = acao + "Item 2";
        }

        private void item3_clicked(object sender, EventArgs e)
        {
            rodape.Text = acao + "Item 3";
        }

        // Evento do mouse
        private void Form1_MouseUp(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Right)
            {
                Form1.ActiveForm.ContextMenu.Show(Form1.ActiveForm, new Point(e.X, e.Y));
            }
        }
                
    }
}

Deixe um comentário