Visual Basic.NET - validacion Numerica

 
Vista:
sin imagen de perfil

validacion Numerica

Publicado por denisse (6 intervenciones) el 08/03/2015 03:12:00
buenas Noches estoy tratando de hacer la validacion de un textbox mediante expresiones regulares sucede que este codigo se cumple pero cuando quiero hacer el eventoleave mediante la tecla enter no lo hace que debo agregar para que hacepte la tecla enter como parte del evento sin tener que llamarlo desde el keypress

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Private Sub TxtDuracion_Leave(sender As Object, e As System.EventArgs) Handles TxtDuracion.Leave
 
        If TxtDuracion.Text.Length = 0 Then
            MsgBox("Indique la duracion de la Actividad")
            TxtDuracion.Focus()
        Else
            If Not Regex.Match(TxtDuracion.Text, "^[0-9]*$", RegexOptions.IgnoreCase).Success Then
                TxtDuracion.Focus()
                TxtDuracion.Clear()
                ValidarDuracion = False
                MsgBox("Solo se Aceptan Caracteres numericos")
            Else
                ValidarDuracion = True
                Duracion = TxtDuracion.Text
                DGVProgramacion.Rows(Celdas).Cells(2).Value = Duracion
                TxtPrecedencia.Focus()
            End If
        End If
End Sub

obviamente el import system.text.expresioneRegulares esta llamado y estan definidas las variables
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
sin imagen de perfil
Val: 16
Ha aumentado su posición en 10 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

validacion Numerica

Publicado por Horroroso (55 intervenciones) el 09/03/2015 17:58:39
Hola, Hay dos formas de resolver tu problema, la Facil... y la Mas facil... cual es la facil, pues haciendo que al presionar Enter funcione como TAB y entonces el control pierda el Foco, lo cual genera el evento Leave:

1
2
3
4
5
6
7
8
9
10
11
Private Sub TextBox_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs)
    Dim tb As TextBox
    tb = CType(sender, TextBox)
 
    If Char.IsControl(e.KeyChar) Then
        If e.KeyChar.Equals(Chr(Keys.Return)) Then
            Me.SelectNextControl(tb, True, True, False, True)
            e.Handled = True
        End If
    End If
End Sub

Y la mas facil, es colocar la validacion en una subrutina y mandarla llamar desde el evento Leave o desde el evento KeyPress:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Private Sub TextBox_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs)
    If Char.IsControl(e.KeyChar) Then
        If e.KeyChar.Equals(Chr(Keys.Return)) Then
            Validar()
        End If
    End If
End Sub
    Private Sub TextBox1_Leave(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1.Leave
        Validar()
    End Sub
    Public Sub Validar()
        If TxtDuracion.Text.Length = 0 Then
            MsgBox("Indique la duracion de la Actividad")
            TxtDuracion.Focus()
        Else
            If Not Regex.Match(TxtDuracion.Text, "^[0-9]*$", RegexOptions.IgnoreCase).Success Then
                TxtDuracion.Focus()
                TxtDuracion.Clear()
                ValidarDuracion = False
                MsgBox("Solo se Aceptan Caracteres numericos")
            Else
                ValidarDuracion = True
                Duracion = TxtDuracion.Text
                DGVProgramacion.Rows(Celdas).Cells(2).Value = Duracion
                TxtPrecedencia.Focus()
            End If
        End If
    End Sub

Espero que sea lo que necesites...

Saludos.
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
sin imagen de perfil

validacion Numerica

Publicado por Denisse (6 intervenciones) el 10/03/2015 01:44:35
Gracias la probare
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