Evento KeyDown de un DataGridView
-
martes, 06 de marzo de 2012 0:14
Hola a todos, en el evento KeyDown de mi DataGridView2 del Form2 tengo el sig. codigo:
If e.KeyCode = Keys.Enter Then
For i = 0 To Form1.DataGridView1.RowCount - 1
Form1.DataGridView.Item(11, i).Value = Me.DataGridView2.SelectedRows(0).Cells(1).Value.ToString
Form1.DataGridView.Item(12, i).Value = Me.DataGridView2.SelectedRows(0).Cells(2).Value.ToString
Form1.DataGridView.Item(13, i).Value = Me.DataGridView2.SelectedRows(0).Cells(6).Value.ToStringMe.Close()
Next
End IfDe esta manera copio los valores de las celdas del DataGridView2 de la fila seleccionada a las celdas del DataGridView1 del Form1.
El problema que tengo es que mientras edito el DataGridView1, a partir de la segunda fila me tira el sig error:
El índice estaba fuera del intervalo. Debe ser un valor no negativo e inferior al tamaño de la colección.
Nombre del parámetro: index (y me mancha el codigo del evento KeyDown del DataGridView2)Es decir mientras edito el DataGridView1 solo puedo realizar la copia de la fila seleccionada del DataGridView2 al DataGridView1 en el primer registro o fila, termino de editar la primera fila y comienzo a editar la segunda, llamo al evento KeyDown del DataGridView2 para realizar nuevamente la copia y me devuelve el error. Alguien sabria decirme donde esta el problema y modificar mi codigo.
Muchas gracias de antemano.
Saludos
- Cambiado Enrique M. MontejoMVP sábado, 07 de abril de 2012 17:24 Controles de Windows Forms (De:Lenguaje VB.NET)
Todas las respuestas
-
martes, 06 de marzo de 2012 0:34Moderador
hola
y como sabes que esto
DataGridView2.SelectedRows
tienes items para trabajar, alli asumesn que al menos hay uno, pero sino es asi
porque no poens la validacion
If DataGridView2.SelectedRows.Count = 0 Then
Return
End If
sino hay seleccion entonces no haces nada y sales
saludos
Leandro Tuttini
Blog
Buenos Aires
Argentina- Propuesto como respuesta Santiago Ezequiel Rueda martes, 06 de marzo de 2012 11:53
-
martes, 06 de marzo de 2012 2:16
Hola Leandro, el DataGridView2 siempre tiene items y al dar ENTER en una fila seleccionada me copia los valores como te puse en el codigo anterior al DataGridView1, el problema que el codigo resulta unicamente para la primera fila de edicion del DataGridView1, cuando quiero realizar la copia a partir de la segunda fila del DataGridView1 me tira ese error. Este ultimo codigo que me pasaste no se como adaptarlo al mio y armarlo.
Muchas gracias nuevamente
-
martes, 06 de marzo de 2012 2:25Moderador
DataGridView2 siempre tiene items
que tenga items no quiere decir que uno este marcado como seelccionado
alli usas la propiedad SelectedRows, no la propiedad Rows, Rows puede tener filas, pero SelectedRows, puede no tener ninguna
cuando quiero realizar la copia a partir de la segunda fila del DataGridView1 me tira ese error
no has probado usando
For Each row As DataGridViewRow In Form1.DataGridView1.Rows
row.Cells(11).Value = ....
Next
para recorrer los registros
saludos
Leandro Tuttini
Blog
Buenos Aires
Argentina- Propuesto como respuesta Santiago Ezequiel Rueda martes, 06 de marzo de 2012 11:52
-
miércoles, 07 de marzo de 2012 1:15
Hola Leandro, cambie el codigo original por el que me pasaste y quedo de esta manera en el evento KeyDown del DataGridView2
If e.KeyCode = Keys.Enter Then
For Each row As DataGridViewRow In DataGridView1.Rows
row.Cells(11).Value = Me.DataGridView2.SelectedRows(0).Cells(1).Value.ToString
row.Cells(12).Value = Me.DataGridView2.SelectedRows(0).Cells(2).Value.ToString
row.Cells(13).Value = Me.DataGridView2.SelectedRows(0).Cells(6).Value.ToString
Me.Close()
Next
End IfPero sucede lo mismo me tira el mismo error: El índice estaba fuera del intervalo. Debe ser un valor no negativo e inferior al tamaño de la colección.Nombre del parámetro: index
Te voy a explicar paso a paso como edito el DataGridView1 porque me parece que el error lo tengo ahí.
Supongamos que lo estoy editando, cuando llego a la columna 11 y doy ENTER sin haber agregado ningun valor en la celda, se abre el DataGridView2 con todos los registros, selecciono una fila, doy ENTER y me copia los valores al DataGridView1. Hasta aca todo perfecto. El problema surge cuando llego a la columna 11, agrego un valor numerico o texto, doy ENTER, se filtra el DataGridView2 dependiendo del valor ingresado en la celda y se abre, aca cuando selecciono una fila y doy ENTER me tira el error que te puse anteriormente.
Espero puedas ayudarme, muchas gracias nuevamente y Saludos

