Ver Mensaje Individual
  #1 (permalink)  
Antiguo 27/04/2010, 08:24
arcr
 
Fecha de Ingreso: julio-2008
Mensajes: 52
Antigüedad: 15 años, 9 meses
Puntos: 0
Eventos del DataGridView

hola amigos del foro:

Aqui estoy yo de nuevo con otra duda. Ahora estoy tratando de validar una celda de un
datagridview con una expresion regular. lo que pasa es que no se en cual evento se
realizaria mejor yo lo que quiero que haga es lo siguiente

tengo el datagrid de la siguiente manera


Cantidad Clave Descripcion Kilataje Peso Avaluo Prestamo

2 0002 JOYAS-ARETES 12 56.789


A la hora de escribir el peso de la prenda quiero validar si la cantidad que escribi
en este caso el 56.789 es correcto para eso uso la siguiente expresion regular:

Private Function validar_peso(ByVal speso As String) As Boolean
Try
Return Regex.IsMatch(speso, "^[0-9]{1,5}([.]?[0-9]{1,2})?$")

Catch ex As Exception
MsgBox(Err.Description, MsgBoxStyle.Critical, "ERROR")
End Try
End Function

En este caso me tiene que dar un error porque solo se admiten hasta 2 decimales
el codigo donde valido es el siguiente:

Private Sub dgPrendas_CellEndEdit(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgPrendas.CellEndEdit
Try
If Me.dgPrendas.Item(5, e.RowIndex).Value.ToString <> "" Then
Dim speso = Me.dgPrendas.Item(5, e.RowIndex).Value.ToString
If (validar_peso(speso) = False) Then
MsgBox("Escribe una cantidad válida recuerda que solo debe contener hasta 2 decimales, vuelva a escribir el Peso de la Prenda", MsgBoxStyle.Information, "Registrar Prendas")
Me.dgPrendas.Item(5, e.RowIndex).Selected = True
Exit Sub
End If
End If
CalcularAvaluoYprestamo(e.RowIndex)

Catch ex As Exception
If Err.Number = 91 Then
Exit Sub
End If

End Try
End Sub

Aqui estoy usando el evento CellEndEdit pero no se si sea el correcto o no para lo que quiero
hacer es por eso que pido yo ayuda. Yo quiero que cuando termine de escribir el peso despues
de que se evalua si es correcto o no. En caso de que no lo sea que me regrese el foco a la
celda y no me deje avanzar hasta que este error se haya corregido.
Lo malo aqui es que no encuentro la propiedad focus de la celda por eso utilizo la linea
Me.dgPrendas.Item(5, e.RowIndex).Selected = True

Alguien me podría decir que evento me conviene utilizar para lo que necesito??
y como puedo regresar el foco a la celda cuantas veces necesite hasta que no se haya corregido
el error??

De antemo a todos por su ayuda mil gracias.