Visual Basic.NET - Validar InputBox

 
Vista:
Imágen de perfil de Jesús

Validar InputBox

Publicado por Jesús (25 intervenciones) el 26/06/2015 00:48:00
Buenas a todos, tengo el siguiente problema.

Tengo en el boton de un Form la creacion de un InputBox en el que quiero que el usuario introduzca tres números y 2 guiones del siguiente modo:

(Num del 1 al 18) - (Num del 1 al 6) - (Num del 1 al 12)

Alguien sabria como puedo validar el inputbox para que el usuario lo ingrese en ese formato?

Muchas gracias de antemano por vuestra ayuda.
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

Validar InputBox

Publicado por SERGIO (7 intervenciones) el 26/06/2015 01:39:06
Hola Jesús,

Yo utilizaría 3 textbox, que estén validados de acuerdo a las cantidades permitidas, el resultado lo puedes concatenar en una variable string o donde lo requieras. De esta forma el procedimiento es mas corto:

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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
Dim var as string
 
'valida que solo se ingresen numeros en el textbox1
Private Sub textbox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles textbox1.KeyPress
            If Not IsNumeric(e.KeyChar) Then
                e.Handled = True
            End If
    End Sub
 
'valida las cantidades del textbox1 y concatena los datos en la variable var
Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
if convert.toint32(textbox1.text) > 6 or convert.toint32(textbox1.text) < 1 then
   msgbox("Ingrese un valor entre 1 y 6")
   textbox1 = empty
   textbox1.setfocus
else
   var = textbox1.text & "-" & textbox2.text & "-" & textbox3.text
End if
end sub
 
 
'valida que solo se ingresen numeros en el textbox2
Private Sub textbox2_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles textbox2.KeyPress
            If Not IsNumeric(e.KeyChar) Then
                e.Handled = True
            End If
    End Sub
 
'valida las cantidades del textbox2 y concatena los datos en la variable var
Private Sub TextBox2_TextChanged(sender As Object, e As EventArgs) Handles TextBox2.TextChanged
if convert.toint32(textbox2.text) > 18 or convert.toint32(textbox2.text) < 1 then
   msgbox("Ingrese un valor entre 1 y 18")
   textbox2 = empty
   textbox2.setfocus
Else
   var = textbox1.text & "-" & textbox2.text & "-" & textbox3.text
End if
end sub
 
 
'valida que solo se ingresen numeros en el textbox3
Private Sub textbox3_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles textbox3.KeyPress
            If Not IsNumeric(e.KeyChar) Then
                e.Handled = True
            End If
    End Sub
 
'valida las cantidades del textbox3 y concatena los datos en la variable var
Private Sub TextBox3_TextChanged(sender As Object, e As EventArgs) Handles TextBox3.TextChanged
if convert.toint32(textbox3.text) > 12 or convert.toint32(textbox3.text) < 1 then
   msgbox("Ingrese un valor entre 1 y 12")
   textbox3 = empty
   textbox3.setfocus
else
   var = textbox1.text & "-" & textbox2.text & "-" & textbox3.text
End if
end sub


Si estas de acuerdo con la solución perfecto, si prefieres hacerlo con el inputbox, puedes comentar de nuevo y te ayudare con el procedimiento.

Espero que mi respuesta te haya sido de ayuda.

Sergio.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Jesús

Validar InputBox

Publicado por Jesús (25 intervenciones) el 26/06/2015 01:55:40
Hola Sergio, lo primero muchas gracias por tu tan rápida respuesta, te comento, he creado un nuevo proyecto para probar tu código, que a simple vista me ha gustado bastante, pero tengo los siguientes problemas, los cuales son, si no me equivoco, debido a la version de Visual que usamos cada uno.

Los textbox.setfocus me dan error, pero los he cambiado por textbox.focus y solucionado.
El otro error son los textbox = empty, el cual no se solucionar debido a que no sé a que equivale empty en mi version de visual.

Si sabes como ayudarme con ese pequeño error te lo agradeceria, y tras esto te comento si me sirve tu código, el cual como he dicho creo que me va a servir, ya que a simple vista me ha gustado bastante.

Uso Visual Studio Express 2013

El error que salta en los empty es el siguiente:

Error 1 No se puede tener acceso a 'System.Empty' en este contexto debido a que es 'Friend'


Muchas gracias por tu ayuda Sergio.

Un saludo, Jesus.


EDITADO:

Hola Sergio, quizas me he precipitado en evz de pensar un poco, y creo que lo que querías poner es que el textbox sea vacio, por lo que he modificado textbox1.text = "" y ya funciona todo perfectamente. sala un problema, ejecuto la aplicacion y si por ejemplo introduzco en alguno de los textboxes algun valor que no quiero, (p.ej el 12 donde solo quiero del 1 al 6 el programa falla)

Te adjunto una captura de donde salta el error. Espero que puedas ayudarme.

De nuevo muchas gracias por tu ayuda.

29e1b427004c562365968f11ed96e70fo
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

Validar InputBox

Publicado por SERGIO (7 intervenciones) el 26/06/2015 02:05:09
Jesús Puedes reemplazar de esta forma:

'Opción 1
TextBox1.Clear()

'Opción 2
TextBox1.Text = Nothing

'Opción 3
TextBox1.Text = ""


Espero te sirva,


Sergio.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Jesús

Validar InputBox

Publicado por Jesús (25 intervenciones) el 26/06/2015 02:08:23
El error de la imagen sale al introducir un numero que no es, pues sale justo al darle a aceptar en el boton del msgbox.
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

Validar InputBox

Publicado por SERGIO (7 intervenciones) el 26/06/2015 02:16:16
Hola Jesús, discúlpame, cometí una omisión, es necesario controlar la excepción en el momento en el cual, el textbox cambia a vació, te envío el código corregido y probado:

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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
Dim var As String
 
    'valida que solo se ingresen numeros en el textbox1
    Private Sub textbox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
        If Not IsNumeric(e.KeyChar) Then
            e.Handled = True
        End If
    End Sub
 
    'valida las cantidades del textbox1 y concatena los datos en la variable var
    Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
        If TextBox1.Text = Nothing Then
            Exit Sub
        Else
            If Convert.ToInt32(TextBox1.Text) > 6 Or Convert.ToInt32(TextBox1.Text) < 1 Then
                MsgBox("Ingrese un valor entre 1 y 6")
                TextBox1.Text = Nothing
                TextBox1.Focus()
            Else
                var = TextBox1.Text & "-" & TextBox2.Text & "-" & TextBox3.Text
            End If
        End If
    End Sub
 
 
    'valida que solo se ingresen numeros en el textbox2
    Private Sub textbox2_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox2.KeyPress
        If Not IsNumeric(e.KeyChar) Then
            e.Handled = True
        End If
    End Sub
 
    'valida las cantidades del textbox2 y concatena los datos en la variable var
    Private Sub TextBox2_TextChanged(sender As Object, e As EventArgs) Handles TextBox2.TextChanged
        If TextBox2.Text = Nothing Then
            Exit Sub
        Else
            If Convert.ToInt32(TextBox2.Text) > 18 Or Convert.ToInt32(TextBox2.Text) < 1 Then
                MsgBox("Ingrese un valor entre 1 y 18")
                TextBox2.Text = Nothing
                TextBox2.Focus()
            Else
                var = TextBox1.Text & "-" & TextBox2.Text & "-" & TextBox3.Text
            End If
        End If
    End Sub
 
 
    'valida que solo se ingresen numeros en el textbox3
    Private Sub textbox3_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox3.KeyPress
        If Not IsNumeric(e.KeyChar) Then
            e.Handled = True
        End If
    End Sub
 
    'valida las cantidades del textbox3 y concatena los datos en la variable var
    Private Sub TextBox3_TextChanged(sender As Object, e As EventArgs) Handles TextBox3.TextChanged
        If TextBox1.Text = Nothing Then
            Exit Sub
        Else
            If Convert.ToInt32(TextBox3.Text) > 12 Or Convert.ToInt32(TextBox3.Text) < 1 Then
                MsgBox("Ingrese un valor entre 1 y 12")
                TextBox3.Text = Nothing
                TextBox3.Focus()
            Else
                var = TextBox1.Text & "-" & TextBox2.Text & "-" & TextBox3.Text
            End If
        End If
    End Sub

Me cuentas como te va...

Sergio
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de Jesús

Validar InputBox

Publicado por Jesús (25 intervenciones) el 26/06/2015 02:29:18
Hola Sergio, antes de nada tu codigo me sirve para lo que inicialmente pido.

Ocurre algo extraño con el textbox 3. Los otros dos funcionan muy bien, pero si pruebas el codigo veras que si antes de escribir nada en los dos primeros texboxes escribo en el 3, me deja poner tantos numeros como yo quiera (p.ej me deja poner 83434873) . Y si escribes algo en los otros dos (los cuales funcionan muy bien como digo), si escribo un numero que no este entre 1 y 12 en el textbox 3 vuelve al saltar el error de la imagen al pulsar aceptar en el msgbox en la misma linea pero en el textbox 3.

Que raro, el codigo es similar a los otros 3 textboxes.

Espero que no te cause mucha molestia volver a mirar el codigo, la condicion que usas en los if es nueva para mi y no se a que se deben estos errores.

Gracias por tu ayuda de nuevo.


EDITADO


He encontrado el error, en el evento textchanged del textbox 3 el primer if pone

If TextBox1.Text = Nothing Then
Exit Sub
Else

Y tiene que ser textbox3.text, se te ha debido pasar al copiarlo del primero. Por supuesto no pasa nada, muchas gracias por tomarte tu tiempo en ayudarme, me has ayudado mucho ya que estaba estancado en esta parte de un proyecto que estoy realizando.

Un cordial saludo!
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

Validar InputBox

Publicado por SERGIO (7 intervenciones) el 26/06/2015 02:32:16
Es un pequeño error en el procedimiento del textbox3, se esta validando el textbox1 en vez del textbox3:

1
2
3
4
5
6
7
8
9
10
11
12
13
Private Sub TextBox3_TextChanged(sender As Object, e As EventArgs) Handles TextBox3.TextChanged
If TextBox1.Text = Nothing Then   'aqui esta el error
Exit Sub
Else
If Convert.ToInt32(TextBox3.Text) > 12 Or Convert.ToInt32(TextBox3.Text) < 1 Then
MsgBox("Ingrese un valor entre 1 y 12")
TextBox3.Text = Nothing
TextBox3.Focus()
Else
var = TextBox1.Text & "-" & TextBox2.Text & "-" & TextBox3.Text
End If
End If
End Sub

Por favor cambia este procedimiento por:

1
2
3
4
5
6
7
8
9
10
11
12
13
Private Sub TextBox3_TextChanged(sender As Object, e As EventArgs) Handles TextBox3.TextChanged
If TextBox3.Text = Nothing Then 'reparado
Exit Sub
Else
If Convert.ToInt32(TextBox3.Text) > 12 Or Convert.ToInt32(TextBox3.Text) < 1 Then
MsgBox("Ingrese un valor entre 1 y 12")
TextBox3.Text = Nothing
TextBox3.Focus()
Else
var = TextBox1.Text & "-" & TextBox2.Text & "-" & TextBox3.Text
End If
End If
End Sub


Sergio
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Jesús

Validar InputBox

Publicado por Jesús (25 intervenciones) el 26/06/2015 02:33:42
Justo has comentado mientras editaba el post, muchas gracias Sergio!
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

Validar InputBox

Publicado por SERGIO (7 intervenciones) el 26/06/2015 02:34:43
Con gusto Jesús, éxitos con tu proyecto.

Sergio
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar