Principales respuestas
no consigo hacer For Each a las celdas de una fila

Pregunta
-
Buenas
Estoy intentando hacer un for Each a una fila para recorrer las celdas de esta fila y que empiece a recorrerlas desde la celda 1
y si la celda 1 es readonly = true entonces que me ponga la celda 2 en readonly = true asi hasta terminar con todas las celdas
Gracias
For Each Columnas As DataGridViewCellCollection In DGV_Maltas.Rows If Me.DGV_Maltas.CurrentRow.Cells(Columnas).ReadOnly = True Then Me.DGV_Maltas.CurrentRow.Cells(Columnas + 1).ReadOnly = True End If MsgBox(Me.DGV_Maltas.CurrentRow.Cells(Columnas + 1).Value) Next
Respuestas
-
Buenas JETET
Estas haciendo un foreach sobre las filas del DGV en vez de sobre las celdas de la fila. Eso es el primer fallo.
Por otro lado, quizás para este caso concreto, te venga mejor usar un bucle for en vez de foreach, porque la primera celda no te interesa evaluarla (no tiene nada anterior), y te interesa controlar en que celda estas, es cierto que puedes hacerlo con ColumnIndex, pero con el for en este caso a mi me parece que queda mas limpio, prueba:
For i As Int= 1 To dgv.CurrentRow.Cells.Count Step 1 dgv.CurrentRow.Cells(i).ReadOnly = dgv.CurrentRow.Cells((i - 1)).ReadOnly Next
Échale un ojo a ver que te parece
Puede que haya algún error de sintaxis, VB y yo... pero bueno, se entiende el concepto
Quedo a la espera de tus comentarios
Atte
No olvides votar mi comentario si te ha ayudado y marcarlo como respuesta si ha sido la solución, con eso ayudas a mejorar mi reputación en la comunidad y a identificar la respuesta a la gente que tenga el mismo problema.
Para obtener una respuesta lo más rápida y concisa posible, te recomiendo:
- Marcado como respuesta JETET miércoles, 13 de diciembre de 2017 16:35
Todas las respuestas
-
Buenas JETET
Estas haciendo un foreach sobre las filas del DGV en vez de sobre las celdas de la fila. Eso es el primer fallo.
Por otro lado, quizás para este caso concreto, te venga mejor usar un bucle for en vez de foreach, porque la primera celda no te interesa evaluarla (no tiene nada anterior), y te interesa controlar en que celda estas, es cierto que puedes hacerlo con ColumnIndex, pero con el for en este caso a mi me parece que queda mas limpio, prueba:
For i As Int= 1 To dgv.CurrentRow.Cells.Count Step 1 dgv.CurrentRow.Cells(i).ReadOnly = dgv.CurrentRow.Cells((i - 1)).ReadOnly Next
Échale un ojo a ver que te parece
Puede que haya algún error de sintaxis, VB y yo... pero bueno, se entiende el concepto
Quedo a la espera de tus comentarios
Atte
No olvides votar mi comentario si te ha ayudado y marcarlo como respuesta si ha sido la solución, con eso ayudas a mejorar mi reputación en la comunidad y a identificar la respuesta a la gente que tenga el mismo problema.
Para obtener una respuesta lo más rápida y concisa posible, te recomiendo:
- Marcado como respuesta JETET miércoles, 13 de diciembre de 2017 16:35
-
Revisa el valor de la propiedad ReadOnly de la primera celda de la "fila actual", de ser True, extiende la misma configuración a todas las celdas de la fila, por ejemplo:
Dim CurrentRow = DGV_Maltas.CurrentRow If CurrentRow.Cells(0).ReadOnly Then For index = 1 To CurrentRow.Cells.Count - 1 CurrentRow.Cells(index).ReadOnly = True Next End If
-
Gracias por responder Jorge
He tenido que cambiar algo el codigo
queria hacer un for each por este error que me da al ejecutarlo
For i = 1 To DGV_Maltas.CurrentRow.Cells.Count Step 1 DGV_Maltas.CurrentRow.Cells(i).ReadOnly = DGV_Maltas.CurrentRow.Cells((i - 1)).ReadOnly Next
el error
-
-
Ups, en VB no esta el concepto "menor que" para el for por lo que veo...
Cambia por eso
For i = 1 To (DGV_Maltas.CurrentRow.Cells.Count - 1) Step 1 DGV_Maltas.CurrentRow.Cells(i).ReadOnly = DGV_Maltas.CurrentRow.Cells((i - 1)).ReadOnly Next
Tiene que terminar en Count - 1 porque las filas del control empiezan en 0 y no en 1, por eso, nosotros empezamos en 1 para saltarnos la primera, y paramos en count-1
Nos comentas
Atte
No olvides votar mi comentario si te ha ayudado y marcarlo como respuesta si ha sido la solución, con eso ayudas a mejorar mi reputación en la comunidad y a identificar la respuesta a la gente que tenga el mismo problema.
Para obtener una respuesta lo más rápida y concisa posible, te recomiendo: