Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: novalida en 19 Marzo 2010, 12:50 pm



Título: Obtener valores de un DataGridView [SOLUCIONADO]
Publicado por: novalida en 19 Marzo 2010, 12:50 pm
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:

Código:
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 :)


Título: Re: Obtener valores de un DataGridView
Publicado por: diego_lp en 19 Marzo 2010, 15:01 pm
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.


Título: Re: Obtener valores de un DataGridView
Publicado por: raul338 en 19 Marzo 2010, 15:09 pm
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
  1. Private Sub DataGridView1_CellContentClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) _
  2.    Handles DataGridView1.CellContentClick, _
  3.    DataGridView1.DoubleClick ' Linea agregada que escucha los 2 eventos
  4.    '' .....
  5. End Sub
  6.  


Título: Re: Obtener valores de un DataGridView
Publicado por: seba123neo en 19 Marzo 2010, 15:11 pm
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.


Título: Re: Obtener valores de un DataGridView
Publicado por: novalida en 19 Marzo 2010, 16:10 pm
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.
Código:
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 :)