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)); } } } }