Visual Basic.NET - Tecla ENTER

 
Vista:

Tecla ENTER

Publicado por Gaston (1 intervención) el 15/08/2016 06:50:41
Hola a todos, tengo el sig codigo en el evento KeyPress de un DataGridView

If e.KeyChar = Chr(13) Then
frmArticulos.txtrubro.Text = datalistado.SelectedCells.Item(0).Value
frmArticulos.txtdenrubro.Text = datalistado.SelectedCells.Item(1).Value
Me.Close()
End If

El problema que tengo es que no me copia los datos de la linea seleccionada, al presionar el ENTER me copia los datos de la siguiente linea, alguien me puede decir donde esta el error.

Muchas gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Tecla ENTER

Publicado por Nacho (56 intervenciones) el 15/08/2016 18:17:10
El error está en no tener en cuenta cómo funciona un sistema operativo de hoy. Funcionan a base de eventos, y van pasando de una función a otra en un orden determinado. Cuando llega a tu función el evento KeyPress ya ha pasado por el DataGridWiev, con lo cual la celda seleccionada a pasado a ser la siguiente.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Diego
Val: 605
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Tecla ENTER

Publicado por Diego (190 intervenciones) el 15/08/2016 23:07:03
Hola Gaston, antes de generarse el evento keypress, se generan los 2 eventos keydown y keyup, entonces. Deberías poner ese codigo en el evento KEYDOWN de tu DATAGRIDVIEW

1
2
3
4
5
If e.KeyCode = keys.Enter Then
frmArticulos.txtrubro.Text = datalistado.CurrentRow.Cells(0).Value
frmArticulos.txtdenrubro.Text = datalistado.CurrentRow.Cells(1).Value
Me.Close()
End If

Nota que keyChar pasa a ser keyCode y te recomiendo uses CURRENTROW frente a SELECTEDCELLS, no entiendo por que usas esa denominación. Queda mucho mejor poner la propiedad selectionMode en FullRowSelect del DATAGRIDVIEW.

Saludos y +bytes
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar