Discussion:
Seleccionar una fila con el click derecho
(demasiado antiguo para responder)
Dany2718
2007-11-13 21:07:55 UTC
Permalink
Hola, soy nuevo en este grupo y necesito de su ayuda, mi problema es
el siguiente:

necesito seleccionar una fila de un Datagridview con el click derecho
del raton y que se despliege un menu contextual con opciones tipo
editar eliminar etc, el menu esta creado con un contmenustrip (o como
se llame el control) y asociado al datagrid, me canse de probar formas
y no logro dar con mi objetivo
estoy programando en Visual Basic 2005 Express
Desde ya muchas gracias por su ayudar.....

Daniel
SoftJaén
2007-11-14 14:46:07 UTC
Permalink
Post by Dany2718
necesito seleccionar una fila de un Datagridview con el click derecho
del raton y que se despliege un menu contextual con opciones tipo
editar eliminar etc, el menu esta creado con un contmenustrip (o como
se llame el control) y asociado al datagrid, me canse de probar formas
y no logro dar con mi objetivo
Hola, Daniel:

Normalmente, las filas de cualquier control tipo Grid se seleccionan con el
botón izquierdo del ratón, y a eso es a lo que están acostumbrados la
mayoría de los usuarios. El botón derecho del ratón, simplemente nos puede
ser útil para desplegar un menú contextual, pero no para seleccionar una
fila del control DataGridView.

No obstante, si esa es tu intención (la cual no la recomiendo en absoluto,
porque sería volver un poco más "locos" a los usuarios de lo que ya lo
están), en el evento «MouseDown» del control DataGridView ejecutarías lo
siguiente:

Private Sub DataGridView1_MouseDown(...)

If e.Button = Windows.Forms.MouseButtons.Right Then

' Si se ha pulsado el botón derecho del ratón,
' seleccionamos la fila completa del control
' DataGridView.
'
With DataGridView1

Dim hti As DataGridView.HitTestInfo = .HitTest(e.X, e.Y)

' Obtenemos la parte del control a las que
' pertenecen las coordenadas.
'
If hti.Type = DataGridViewHitTestType.Cell Then
.CurrentCell = _
.Rows(hti.RowIndex).Cells(hti.ColumnIndex)
End If

End With
End If

End Sub

Para que la fila quede completamente seleccionada, el valor de la propiedad
«SelectionMode» del control DataGridView deberá ser «FullRowSelect»:

DataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect

Y en cuanto al menú contextual, si dices que has configurado un control tipo
«ContextMenuStrip», simplemente se lo deberás de asignar a la propiedad
«ContextMenuStrip» del control DataGridView:

Me.DataGridView1.ContextMenuStrip = Me.ContextMenuStrip1

Ahora, cada vez que el usuario haga clic en una fila con el botón derecho
del ratón, quedará seleccionada la fila completa y aparecerá el menú
contextual que has creado.

Un saludo
--
Enrique Martínez
[MS MVP - VB]

Nota informativa: La información contenida en este mensaje, así como el
código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin
garantías de ninguna clase, y no otorga derecho alguno. Usted asume
cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o
sugerido en el presente mensaje.
Dany2718
2007-11-15 01:50:34 UTC
Permalink
Post by SoftJaén
Post by Dany2718
necesito seleccionar una fila de un Datagridview con el click derecho
del raton y que se despliege un menu contextual con opciones tipo
editar eliminar etc, el menu esta creado con un contmenustrip (o como
se llame el control) y asociado al datagrid, me canse de probar formas
y no logro dar con mi objetivo
Normalmente, las filas de cualquier control tipo Grid se seleccionan con el
botón izquierdo del ratón, y a eso es a lo que están acostumbrados la
mayoría de los usuarios. El botón derecho del ratón, simplemente nos puede
ser útil para desplegar un menú contextual, pero no para seleccionar una
fila del control DataGridView.
No obstante, si esa es tu intención (la cual no la recomiendo en absoluto,
porque sería volver un poco más "locos" a los usuarios de lo que ya lo
están), en el evento <<MouseDown>> del control DataGridView ejecutarías lo
Private Sub DataGridView1_MouseDown(...)
If e.Button = Windows.Forms.MouseButtons.Right Then
' Si se ha pulsado el botón derecho del ratón,
' seleccionamos la fila completa del control
' DataGridView.
'
With DataGridView1
Dim hti As DataGridView.HitTestInfo = .HitTest(e.X, e.Y)
' Obtenemos la parte del control a las que
' pertenecen las coordenadas.
'
If hti.Type = DataGridViewHitTestType.Cell Then
.CurrentCell = _
.Rows(hti.RowIndex).Cells(hti.ColumnIndex)
End If
End With
End If
End Sub
Para que la fila quede completamente seleccionada, el valor de la propiedad
DataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect
Y en cuanto al menú contextual, si dices que has configurado un control tipo
<<ContextMenuStrip>>, simplemente se lo deberás de asignar a la propiedad
Me.DataGridView1.ContextMenuStrip = Me.ContextMenuStrip1
Ahora, cada vez que el usuario haga clic en una fila con el botón derecho
del ratón, quedará seleccionada la fila completa y aparecerá el menú
contextual que has creado.
Un saludo
--
Enrique Martínez
[MS MVP - VB]
Nota informativa: La información contenida en este mensaje, así como el
código fuente incluido en el mismo, se proporciona <<COMO ESTÁ>>, sin
garantías de ninguna clase, y no otorga derecho alguno. Usted asume
cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o
sugerido en el presente mensaje.
GRACIAS!!!! me funciono a la perfeccion, la vedad es que estaba
frenado con la programacion por no saber como hacer eso, se que es
medio engorroso para el usuario pero es una opcion mas ya que el
control se adapta a lo que quiero hacer porque no tengo lugar en la
interfaz como para colocar un boton....nuevamente Agradecido y cuente
conmigo para lo que sea.....

Daniel

Continúe leyendo en narkive:
Loading...