jueves, 26 de enero de 2012

Seleccionar celda + datagridview + click derecho


Sin duda no es un comportamiento común dentro de un Datagridview, sin embargo, en ocasiones es necesario, principalmente para permitir el que sea lanzado un menú contextual a la vez que se selecciona una fila o celda que se desea.
   Sin embargo, para conseguirlo se requiere mas que solo activar alguna propiedad, es forzoso realizar este proceso mediante código, específicamente, una función que sea lanzada al momento que se presiona el botón del mouse, es decir, usando el evento Mouse down
Private Sub DGEquipos_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles DGEquipos.MouseDown
          If e.Button = Windows.Forms.MouseButtons.Right Then
               With Me.DGEquipos
                   Dim Hitest As DataGridView.HitTestInfo = .HitTest(e.X, e.Y)                   If Hitest.Type = DataGridViewHitTestType.Cell Then
                      .CurrentCell = .Rows(Hitest.RowIndex).Cells(Hitest.ColumnIndex)                   End If
               End With
          End If
   End Sub

      En la primera y única condicional, solo hacemos que el sistema se asegure que se ha presionado el botón derecho, comparando el valor del boton que se ha presionado contra el valor de la constante del sistema perteneciente al botón derecho.
      A continuación procedemos a declarar e inicializar una variable de tipo Hitestinfo, a quien se le asigna el resultado de la función hitest, perteneciente al datagridview deseado, dado que es una de las partes mas importantes, se ha remarcado en rojo.
     el método Hitest nos devuelve el control o elemento  que se encuentre en las coordenadas que se le dan  como argumento que, en este caso, corresponden a las que nos indican donde se ha presionado el botón derecho del mouse
     Al final, solo nos resta verificar si el tipo de control capturado en el paso anterior es una de las celdas del datagridview, en este caso, se ha remarcado la línea en azul.
    Para terminar, solo ajustamos la celda usando los datos obtenidos a través de el método Hitest, paso remarcado en color café

No hay comentarios:

Publicar un comentario