Obtener valores de un DataGridView [SOLUCIONADO]

Iniciado por novalida, 19 Marzo 2010, 12:50 PM

0 Miembros y 1 Visitante están viendo este tema.

novalida

Hola!
He implementado este evento CellContentClick para que cuando se haga click sobre una fila de un objeto DatagridView se rellenen con los datos de dicha fila unos TextBox del mismo formulario:

Private Sub DataGridView1_CellContentClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellContentClick
       Me.txtDni.Text = Me.DataGridView1.CurrentRow.Cells.Item("dni").Value
       Me.txtNombre.Text = Me.DataGridView1.CurrentRow.Cells.Item("nombre").Value
       Me.txtTelefono.Text = Me.DataGridView1.CurrentRow.Cells.Item("telefono").Value
   End Sub


El problema es que al hacer click no siempre se rellenan los TextBox, teniendo que dejar cierto tiempo entre click y click para que sí se rellenen.

¿Alguien sabe por qué es el problema y cómo puedo solucionarlo?

Un saludo y gracias :)

diego_lp

Hola novalida,
Me suena que el problema puede ser que si es muy pequeño el intervalo entre click y click el programa te dispare el evento de "DobleClick" en lugar de "CellContentClick".
Tal vez te sirva, probá escribir algun msgbox en los eventos de DobleClick y CellDobleClick para saber si se te estan disparando alguno de estos eventos en lugar del que tu quieres.
Hay otras formas mas "profecionales" de capturar el evento que se dispara pero ésto es lo mas rapido y sencillo.
Saludos.
Los programadores hicimos un pacto con Dios, él no hace sistemas y nosotros no hacemos milagros!

raul338

y si pones que escuchen los 2 eventos? mas facil asi no te rompes el coco pensando. Eso si, yo lo pondria todo en "Click" y ahi veria si hay una celda seleccionada que muestre los datos, sino que no haga nada (o haga lo que se quiera :P)

Código (vbnet) [Seleccionar]

Private Sub DataGridView1_CellContentClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) _
    Handles DataGridView1.CellContentClick, _
   DataGridView1.DoubleClick ' Linea agregada que escucha los 2 eventos
   '' .....
End Sub

seba123neo

fijate poner ese codigo en otro envento...porque ahi solo lo hace si haces click en una celda...busca otro evento que lo haga siempre, y tambien fijate debes ponerlo cuando el usuario se mueve con el teclado...

saludos.
La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson

novalida

Hola de nuevo!!!
Antetodo muchísimas gracias por contestar :)
Bueno, al final cambié el evento dado que la solución inicial no era la más correcta y como ha dicho seba123neo sería más correcto que el evento también detectara el movimiento por el teclado.
Private Sub DataGridView1_CellEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellEnter
        Me.txtDni.Text = Me.DataGridView1.CurrentRow.Cells.Item("dni").Value
        Me.txtNombre.Text = Me.DataGridView1.CurrentRow.Cells.Item("nombre").Value
        Me.txtTelefono.Text = Me.DataGridView1.CurrentRow.Cells.Item("telefono").Value
    End Sub


Gracias de nuevo :)