Validación

20/09/2004 - 19:55 por Omar Flores | Informe spam
Que tal, tengo un pequeño problema de validación, lo que pasa es que quiero
validar en un TextBox que solo me admita valores numéricos y que si el
usuario pone una letra u otro caracter que no sea numérico le mande un
mensaje, en el código que a continuación les presento hago esto pero tiene
un defecto, cundo el usuario introduce una letra, le despliega el mensaje y
borra lo que tenia anteriormente el textbox pero despues de haber borrado
(si hay error) me pone el último caracter presionado y lo que quiero es que
me limpie completamente todo lo escrito anteriormente.

Private Sub txtBusca_KeyPress(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles txtBusca.KeyPress

If Char.IsLetter(e.KeyChar) = True Then

MessageBox.Show("No se admiten letras", "Alerta", MessageBoxButtons.OK,
MessageBoxIcon.Information)

txtBusca.Focus()

txtBusca.Text = ""

End If

End Sub



Espero y me puedan ayudar, gracias.

Preguntas similare

Leer las respuestas

#1 Eduardo A. Morcillo [MS MVP VB]
20/09/2004 - 20:26 | Informe spam
Mejor seria que chequearas en el evento TextChanged ya que ese codigo no si
el usuario pega texto desde el portapapeles. Usando una expresion regurlar
puedes validar si el texto solo contiene numeros:

If Not System.Text.RegularExpressions.Regex.IsMatch(TextBox1.Text, "^\d*$")
Then
MessageBox.Show("No se admiten letras")
TextBox1.Text = ""
End If

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
Respuesta Responder a este mensaje
#2 Rosario
20/09/2004 - 22:12 | Informe spam
Que tal muchas gracias, tu código me fué de mucha ayuda. Ahora solo me
podrias explicar que signifaca lo sig. en el código.
"^\d*$" Ya se que es para no aceptar letras, pero me poddrias explicar que
sifnicaca cada signo, o donde puedo encontrar información al respecto.
Muchas gracias.


"Eduardo A. Morcillo [MS MVP VB]" <emorcilloATmvps.org> escribió en el
mensaje news:
Mejor seria que chequearas en el evento TextChanged ya que ese codigo no


si
el usuario pega texto desde el portapapeles. Usando una expresion regurlar
puedes validar si el texto solo contiene numeros:

If Not System.Text.RegularExpressions.Regex.IsMatch(TextBox1.Text,


"^\d*$")
Then
MessageBox.Show("No se admiten letras")
TextBox1.Text = ""
End If

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo



Respuesta Responder a este mensaje
#3 Eduardo A. Morcillo [MS MVP VB]
21/09/2004 - 03:10 | Informe spam
Rosario wrote:
Que tal muchas gracias, tu código me fué de mucha ayuda. Ahora solo me
podrias explicar que signifaca lo sig. en el código.
"^\d*$" Ya se que es para no aceptar letras, pero me poddrias
explicar que sifnicaca cada signo, o donde puedo encontrar
información al respecto. Muchas gracias.



Esto lo puedes ver con mas detalle en la ayuda de expresiones regulares. Los
signos de esta expresion son:

^ -> Inicio de la cadena
\d -> Caracter que representa un numero (0 al 9)
* -> 0 o mas coincidencias de la ultima expresion. En este caso 0 o mas de
"\d"
$ -> Fin de la cadena

O sea que lo que busca esta expresion son 0 o mas numeros desde el principio
al final de la cadena.

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
Respuesta Responder a este mensaje
#4 Oscar
21/09/2004 - 22:17 | Informe spam
Hola, y no se puede hacer algo parecido, pero que en lugar de borrar los caracteres no deseados,
simplemente no los ponga? como el keyascii=0 de vb6...

Saludos y gracias

"Eduardo A. Morcillo [MS MVP VB]" <emorcilloATmvps.org> escribió en el mensaje
news:
Rosario wrote:
> Que tal muchas gracias, tu código me fué de mucha ayuda. Ahora solo me
> podrias explicar que signifaca lo sig. en el código.
> "^\d*$" Ya se que es para no aceptar letras, pero me poddrias
> explicar que sifnicaca cada signo, o donde puedo encontrar
> información al respecto. Muchas gracias.

Esto lo puedes ver con mas detalle en la ayuda de expresiones regulares. Los
signos de esta expresion son:

^ -> Inicio de la cadena
\d -> Caracter que representa un numero (0 al 9)
* -> 0 o mas coincidencias de la ultima expresion. En este caso 0 o mas de
"\d"
$ -> Fin de la cadena

O sea que lo que busca esta expresion son 0 o mas numeros desde el principio
al final de la cadena.

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo


Respuesta Responder a este mensaje
#5 Eduardo A. Morcillo [MS MVP VB]
22/09/2004 - 06:43 | Informe spam
Hola, y no se puede hacer algo parecido, pero que en lugar de borrar
los caracteres no deseados, simplemente no los ponga? como el
keyascii=0 de vb6...



Si, eso puedes hacerlo en los eventos keypress, keydown y keyup asignado
True a la propiedad Handled del Key(Press)EventArgs. A lo que yo iba con lo
del TextChanged es que usar solo los eventos KeyXXXX no previene que se
pueda pegar cualquier contenido sin que sea validado en el control.

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida