Bueno estoy usando RegEx.Replace para filtrar todos los caracteres no numericos de un TextBox; esto ya lo logre.
Mi problema surge al querer agregar una exepcion al filtro. yo quiero que en el cuadro se puedan poner numeros (0-9) y tambien el "."(punto).
actualmente el codigo es el siguiente:
TextBox12.Text = Regex.Replace(TextBox12.Text, [!-/:-■], "")
(■ = 254ascii)
nadie sabe??? realmente no logro una forma de agregar una excepcion para un caracter.
Mira buscando en google encontre esto
http://www.elguille.info/regexp/regExp01.aspx
http://www.recursosvisualbasic.com.ar/htm/trucos-codigofuente-visual-basic/166-expresiones-regulares.htm
Y yo cree un programa que tambien necesitaba bloquear los caracteres no numerikos pero permitir el punto
Eso lo logre en el evento KeyPress del TextBox algo asi
Private Sub TextBox1(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
If Not (IsNumeric(e.KeyChar) Or e.KeyChar = "." ) Then
My.Computer.Audio.PlaySystemSound(Media.SystemSounds.Asterisk)
e.Handled = True
End If
End Sub
Fijate q si se teclea algun caracter q no sea numero o el punto reproduce un sonido del sistema (arterisko)
Talvez tanbien quieras bloquear el salto de linea (13) y el tabulador, para eso usa el siguiente codigo
Private Sub TextBox1(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
If Not (IsNumeric(e.KeyChar) Or e.KeyChar = "." Or Asc(e.KeyChar) = 8 Or Asc(e.KeyChar) = 13) Then
My.Computer.Audio.PlaySystemSound(Media.SystemSounds.Asterisk)
e.Handled = True
End If
End Sub
Observa como se usa IF
si, esa parte ya la hice. explico un poco mas detallado.
es un textbox en el cual va una coordenada (aproximadamente 8 digitos), por lo que seria tedioso copiar numero por numero. entonces permito que peguen el contenido desde el clipboard.
el problema es que el evento KeyPress no es llamado, por lo cual use RegEx en el evento TextChange. el codigo completo para esto es:
Const BadChars As String = "[!-/:-■]"
Private Sub TextBox3_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox3.KeyPress
If Not IsNumeric(e.KeyChar) And Not Char.IsControl(e.KeyChar) And e.KeyChar <> "." And Asc(e.KeyChar) <> 8 Then
e.Handled = True
If e.KeyChar = "." And TextBox3.Text.IndexOf(".") <> -1 Then
e.Handled = True
End Sub
Private Sub TextBox3_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox3.TextChanged
TextBox3.Text = Regex.Replace(TextBox3.Text, BadChars, "")
End Sub
lo que aparece como "■" es el caracter ascii 254
Sí es una expresión regular ¿por qué no usas esto?:
[^\d\.]+
Con esa expresión reconoces todo lo que no sean números ni punto.
Saludos.
wow gracias. eso funciono perfecto. no se me ocurrio xq todavía no termino de comprender RegEx.