Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: jaxoR en 25 Mayo 2015, 19:15 pm



Título: Problema con contextmenu
Publicado por: jaxoR en 25 Mayo 2015, 19:15 pm
Bueno, mi idea era que cuando un usuario haga click derecho en una celda de un datagridview, se le abra un contextmenu con la opción para eliminar esa fila.

Pero al hacer click derecho, no aparece el menu. Acá el código que uso:

Código
  1. private void dataGridView1_MouseDown(object sender, MouseEventArgs e)
  2.        {
  3.            if (e.Button == MouseButtons.Right)
  4.            {
  5.                contextMenuStrip1.Show(MousePosition);
  6.            }
  7.        }


Título: Re: Problema con contextmenu
Publicado por: Eleкtro en 25 Mayo 2015, 20:52 pm
Buenas

No es necesario que controles ningún evento, simplemente asigna la propiedad ContextMenuStrip de ese DataGridView.

Código
  1. this.dataGridView1.ContextMenuStrip == this.contextMenuStrip1;

De todas formas, el código que has mostrado debería funcionarte, un motivo por el que no se muestre el menú puede ser debido a que no hayas añadido ningún elemento al menú, y por ende el menú esté vacío (no se puede mostrar un menú sin elementos), otra posibilidad sería que no hayas controlado correctamente el evento MouseDown del dataGridView1, puedes comprobar los event-handlers en el archivo Form1.Designer.cs, deberías tener algo parecido a esto:
Código
  1. dataGridView1.MouseDown += new EventHandler(dataGridView1_MouseDown);

Saludos


Título: Re: Problema con contextmenu
Publicado por: jaxoR en 26 Mayo 2015, 00:55 am
No tenia el elemento y lo agregué al designer, pero me arroja el siguiente error:

Citar
Ninguna sobrecarga correspondiente a 'dataGridView1_MouseDown' coincide con el 'System.EventHandler' delegado


Título: Re: Problema con contextmenu
Publicado por: Eleкtro en 26 Mayo 2015, 01:13 am
Ninguna sobrecarga correspondiente a 'dataGridView1_MouseDown' coincide con el 'System.EventHandler' delegado

Tienes razón, el delegado correcto es ➢ MouseEventHandler Delegate (https://msdn.microsoft.com/en-us/library/system.windows.forms.mouseeventhandler%28v=vs.110%29.aspx), corrígelo así:
Código
  1. this.dataGridView1.MouseDown += new System.Windows.Forms.MouseEventHandler(this.dataGridView1_MouseDown);

PD: Un consejo si me lo permites, programar con la IDE en Castellano no te aportará ningún beneficio, ni de entendimiento, es cómo estar leyendo una mala traducción de Google que te cierra a la programación, ya que esta es en Inglés.

Saludos!


Título: Re: Problema con contextmenu
Publicado por: jaxoR en 26 Mayo 2015, 02:46 am
Funciono todo perfecto. Gracias por la ayuda y por la recomendación.