Datagridview validación celdas

12/09/2006 - 12:39 por Nhoa78 | Informe spam
Hola
Quiero validar el contenido de una celda de un datagridview. Para ello en la
función CellValidated del datagridview compruebo si los datos introducidos
cumplen el formato y lo que quiero es que si no cumple el formato no me deje
salir de la celda hasta que sea correcto, pero no se como volver a poner el
foco en la celda.

La función que utilizo es la siguiente:
Private Sub dgrid_CellValidated(ByVal sender As Object, ByVal e As
System.Windows.Forms.DataGridViewCellEventArgs) Handles dgrid.CellValidated

If Not Me.dgrid.Item(e.ColumnIndex, e.RowIndex).Value Is Nothing Then
Dim sMensaje As String =
oComun.ComprobarFormato(Me.dgrid.Item(e.ColumnIndex, e.RowIndex).Value,
Me.dgrid.Columns(e.ColumnIndex).Name, 0) --si el formato es incorrecto
devuelve un mensaje de error
If sMensaje <> "" Then
MsgBox(sMensaje , MsgBoxStyle.Exclamation, "Error")
' Me.dgLineasMP.Item(e.ColumnIndex, e.RowIndex).Value =
iValorAnterior
'Me.dgLineasMP.CurrentCell = Me.dgLineasMP(e.ColumnIndex,
e.RowIndex)
'Me.dgLineasMP.Focus()

End If
End If
End Sub


Gracias
 

Leer las respuestas

#1 Luis Miguel Blanco
12/09/2006 - 18:31 | Informe spam
Hola Nhoa78

Para validar la edición de una celda en el control DataGridView utiliza
mejor el evento CellValidating, ya que en su parámetro
DataGridViewCellValidatingEventArgs dispones de la propiedad Cancel, la cual
puedes asignar a True en el caso de que el valor introducido por el usuario
sea incorrecto, obligándole a permanecer en la celda hasta que no teclee el
dato adecuado.

'//////////////////////////////
Private Sub grdDatos_CellValidating(ByVal sender As System.Object, ByVal e
As System.Windows.Forms.DataGridViewCellValidatingEventArgs) Handles
grdDatos.CellValidating

' si el dato no es correcto asignas lo siguiente:
e.Cancel = True

End Sub
'//////////////////////////////

El evento CellValidated que estás usando se produce después de haber
ocurrido la validación, por lo que no es el adecuado para esta operación que
necesitas hacer.

Espero que te sea de utilidad.
Un saludo
Luis Miguel Blanco
http://www.dotnetmania.com


"Nhoa78" wrote:

Hola
Quiero validar el contenido de una celda de un datagridview. Para ello en la
función CellValidated del datagridview compruebo si los datos introducidos
cumplen el formato y lo que quiero es que si no cumple el formato no me deje
salir de la celda hasta que sea correcto, pero no se como volver a poner el
foco en la celda.

La función que utilizo es la siguiente:
Private Sub dgrid_CellValidated(ByVal sender As Object, ByVal e As
System.Windows.Forms.DataGridViewCellEventArgs) Handles dgrid.CellValidated

If Not Me.dgrid.Item(e.ColumnIndex, e.RowIndex).Value Is Nothing Then
Dim sMensaje As String =
oComun.ComprobarFormato(Me.dgrid.Item(e.ColumnIndex, e.RowIndex).Value,
Me.dgrid.Columns(e.ColumnIndex).Name, 0) --si el formato es incorrecto
devuelve un mensaje de error
If sMensaje <> "" Then
MsgBox(sMensaje , MsgBoxStyle.Exclamation, "Error")
' Me.dgLineasMP.Item(e.ColumnIndex, e.RowIndex).Value =
iValorAnterior
'Me.dgLineasMP.CurrentCell = Me.dgLineasMP(e.ColumnIndex,
e.RowIndex)
'Me.dgLineasMP.Focus()

End If
End If
End Sub


Gracias

Preguntas similares