ejemplo derecho contextual context boton c# winforms visual-studio menu right-click

c# - contextual - Agregar un menú de clic derecho a un elemento



menu contextual c# (4)

He estado buscando durante un tiempo un simple menú contextual para un solo elemento. Por ejemplo, si hago clic con el botón derecho en una imagen, quiero que aparezca un pequeño menú con mis propias etiquetas: Agregar, Eliminar, etc. Si alguien pudiera ayudar, me sentiría muy agradecido.

Gracias por mirar.

Aquí está el código completo:

ContextMenu cm = new ContextMenu(); cm.MenuItems.Add("Item 1", new EventHandler(Removepicture_Click)); cm.MenuItems.Add("Item 2", new EventHandler(Addpicture_Click)); pictureBox1.ContextMenu = cm;


Agregue un menú contextual a su formulario y luego asígnelo en las propiedades del control en ContextMenuStrip. Espero que esto ayude :).

Espero que esto ayude:

ContextMenu cm = new ContextMenu(); cm.MenuItems.Add("Item 1"); cm.MenuItems.Add("Item 2"); pictureBox1.ContextMenu = cm;


Esta es una respuesta completa a esta pregunta. Lo he hecho porque esta página ocupa un lugar destacado en los resultados de búsqueda de Google y la respuesta no entra en detalles suficientes. Esta publicación asume que eres competente en el uso de formularios de Visual Studio C #. Esto se basa en VS2012.

  1. Comience simplemente arrastrando un ContextMenuStrip en el formulario. Simplemente lo colocará en la esquina superior izquierda donde puede agregar los elementos del menú y cambiarle el nombre como mejor le parezca.

  2. Deberá ver el código e ingresar en un evento usted mismo en el formulario. Cree un evento de mouse down para el elemento en cuestión y luego asigne un evento de clic derecho como así (he llamado a ContextMenuStrip "rightClickMenuStrip"):

    private void pictureBox1_MouseDown(object sender, MouseEventArgs e) { switch (e.Button) { case MouseButtons.Right: { rightClickMenuStrip.Show(this, new Point(e.X, e.Y));//places the menu at the pointer position } break; } }

  3. Asigne el controlador de eventos manualmente al form.designer (puede necesitar agregar un "uso" para System.Windows.Forms; Puede resolverlo):

    this.pictureBox1.MouseDown += new MouseEventHandler(this.pictureBox1_MouseDown);

  4. Todo lo que se necesita en este momento es simplemente hacer doble clic en cada elemento del menú y realizar las operaciones deseadas para cada evento de clic de la misma manera que lo haría con cualquier otro botón.

Este es el código básico para esta operación. Obviamente, puede modificarlo para que se ajuste a sus prácticas de codificación.


Si está usando Visual Studio, también hay una solución GUI:

  1. Desde Toolbox agrega un ContextMenuStrip
  2. Seleccione el menú contextual y agregue los elementos de clic derecho
  3. Para cada elemento, configure los eventos de clic en las funciones correspondientes
  4. Seleccione la forma / botón / imagen / etc. (cualquier elemento) que el menú de clic derecho se conectará
  5. Establezca su propiedad ContextMenuStrip en el menú que ha creado.

Después de haberme equivocado con esto, es útil saber que los puntos eX / eY son relativos al control, así que si (como yo) está agregando un menú contextual a una vista de lista o algo similar, querrá ajustarlo con el origen de la forma. En el siguiente ejemplo, he agregado 20 a la x / y para que el menú aparezca ligeramente a la derecha y debajo del cursor.

cmDelete.Show(this, new Point(e.X + ((Control)sender).Left+20, e.Y + ((Control)sender).Top+20));