Independientemente de las mil y una formas para filtrar/formatear entradas de texto, me gustan las sencillas sin retorcimientos. Aquí te dejo una idea de cómo aplicar reglas cuando se trata de todo un form, aunque trabajandolo puedes customizar el comportamiento en funcion al control que tiene el foco. No olvides que tambien dispones de un espacio de nombres sensacional :
Imports System.Text.RegularExpressions
Aunque como te digo, en determinadas ocasiones cabe aplicar lo sencillo si con ello cubrimos las necesidades. 😉
El siguiente ejemplo demuestra como filtrar la pulsación de cualquier tecla que no sea numerica o coma.
Private Sub Form1_Load(…) Handles MyBase.Load
Me.KeyPreview = True
End Sub
Protected Overrides Function ProcessDialogKey(ByVal keyData As System.Windows.Forms.Keys) As Boolean
Select Case keyData
‘ 48 a 57 = numericas encima teclado alfabetico
‘ 97 a 106 = Numericas teclado numerico
Case 48 To 57, 97 To 106, Keys.Oemcomma
‘Solo devolver las pulsaciones que pasan el filtro
Return MyBase.ProcessDialogKey(keyData)
Case Else
‘Evitar la propagacion de la pulsacion
‘de teclas que no nos interesan
Return True
End Select
End Function
Lo Bueno y simple… Dos veces bueno!
Pep Lluis
amigo como haria para ponerlo en un user control para que en un text box solo me acepte numero y tener una propiedad que indique que numero quiero validar, entero o decimal, etc, espero que me puedas ayudar
También deberías considerar el caso de la pulsación del Ctrl + X, C ó V. Al final, siempre acaba haciendo falta 😛
Hombre don Rafael!
Pues delo por considerado!, solo deberiamos añadir las series adecuadas para que pasen el filtro, asi como tambien deberiamos añadir el Chr(8) para procesar el imprescindible ‘backspace’ 😉
No hay nada como ser buenos y previsores! jajajajaja.
Un Abrazo,
Pep Lluis,
Hola Fsigu,
Deberias utilizar los eventos :
TextBox1.PreviewKeyDown
TextBox1.KeyDown
TextBox1.KeyPress
TextBox1.KeyUp
Si con esto no es suficiente concreta que tipo de filtro te interesa aplicar al textbox y razonamos la mejor forma de hacerlo.
Saludos,
Pep Lluis,