2012-10-05 31 views
5

Así que es bastante fácil de comprobar si una célula se ha hecho clic con:Detectando CTRL + Clic para la celda de DataGridView en el mismo controlador de eventos

 DataGridView.CellClicked += cellClickedHandler; 

Y es bastante fácil de comprobar si una tecla ha sido presionada con:

 DataGridView.KeyDown += keyPressedHandler; 

Me pregunto cómo puedo combinar ambas funciones en una sola? Me gustaría realizar una acción específica cuando un control de usuario hace clic en una celda y, por lo que puedo ver, los controladores de acción para estos eventos son dos funciones independientes únicas y los parámetros pasados ​​a cellClickedHandler no me permiten obtener el estado del teclado y cualquier pulsación de tecla que pueda estar disparando junto con el clic del mouse.

+1

La respuesta a [una pregunta similar] (http://stackoverflow.com/a/515118/292067) debe ayudarle. – jswolf19

+0

No tenía idea de que la clase Control existía, ¡gracias! Estoy tomando estas cosas visuales C# una cosa a la vez. He estado haciendo muchas búsquedas en Google y no surge nada con una consulta similar a mi pregunta, así que espero que ahora la gente pueda dirigirse a la respuesta con esto. ¡Gracias! – anon58192932

Respuesta

5
private void cellClicked(object sender, DataGridViewCellMouseEventArgs e) 
    { 
     if(e.Button == MouseButtons.Right) // right click 
     { 
      if (Control.ModifierKeys == Keys.Control) 
       System.Diagnostics.Debug.Print("CTRL + Right click!"); 
      else 
       System.Diagnostics.Debug.Print("Right click!"); 
     } 
     if (e.Button == MouseButtons.Left) // left click 
     { 
      if (Control.ModifierKeys == Keys.Control) 
       System.Diagnostics.Debug.Print("CTRL + Left click!"); 
      else 
       System.Diagnostics.Debug.Print("Left click!"); 
     } 
    } 
+0

Gracias a @ jswolf19 por señalarme hacia el código correcto – anon58192932

+1

Tenga cuidado, porque la forma en que ha escrito el código ctrl + shift + clic, ctrl + alt + clic y ctrl + shift + alt + clic no se registrará. Este puede o no ser el comportamiento que desea^_^ – jswolf19

+0

Duly notado, gracias! – anon58192932

Cuestiones relacionadas