Guiones automáticos y borrado de los mismos en vb

Me gustaría saber un código donde introduzca un numero de teléfono y automáticamente se agreguen separadores (guiones). Y al borrar los números, se borren los separadores (guiones).

Ejemplo: 1234567890 y al irlos digitando... 123-456-7890

Este es el código que estoy utilizando. Todo bien. Pero no puedo borrar los guiones...

Select Case Len(Txt1.Text)

 Case 3, 11
 Txt1.Text = Txt1.Text & "-"
 Txt1.Select(Txt1.Text.Length, 0)
End Select

2 respuestas

Respuesta
1

Yo haría lo siguiente:

Para poner los guiones seria:

Dim Nuevo_Telefono as String

Nuevo_Telefono=mid(txt1.text,1,3) & "-" & mid(txt1.text,4,3) & "-" & mid(txt1.text,7,3) 

Y luego guardas la variable en lugar del textbox.

Para quitarlos seria

txt1.text= replace(telefono_obtenido,"-","")

No. Nada que ver. Lo estuve intentando por horas y nada.

Lo más cercano que he podido lograr es el código que aun lo estoy utilizando...

Select Case Len(TextBox1.Text)
Case 3, 7
TextBox1.Text = TextBox1.Text & "-"
TextBox1.Select(TextBox1.Text.Length, 0)

End Select

'y en la propiedad keydown del textbox...

Select Case e.KeyData

Case Keys.Back

Try

TextBox1.Text = TextBox1.Text.Substring(0, TextBox1.Text.Count() - 1)

Catch ex As Exception

End Try

End Select

Pruébalo, y te darás cuenta de lo que digo.

No se como lo estas haciendo. Se supone que si quieres poner guion a todos los teléfonos al mostrar deberán llevar el mismo patrón por eso te he puesto la serie de mid concatenandolos con el guion.

He hecho un pequeño programita y te pongo el código aquí y lo pruebas tu. Tan sencillo como una aplicación nueva, con 3 textbox y tres botones. Introduzco un teléfono en la primera caja de texto y pulso los botones y me funciona a la perfección. Esto debería funcionar igual con datos recuperados de base de datos.

Este es el código.

Private Sub TextBox1_KeyUp(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyUp
If Len(TextBox1.Text) = 9 Then
TextBox2.Text = Mid$(TextBox1.Text, 1, 3) & "-" & Mid$(TextBox1.Text, 4, 2) & "-" & Mid$(TextBox1.Text, 6, 2) & "-" & Mid$(TextBox1.Text, 8, 3)
End If
End Sub

Private Sub btn_Quitar_Guion_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Quitar_Guion.Click
TextBox3.Text = Replace(TextBox2.Text, "-", "")
End Sub

Private Sub btn_salir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_salir.Click
End
End Sub

Como veras estos renglones son demasiado cortos y si cortas y pegas te data error a no ser que pongas cada instrucción en un solo renglón.

En principio había puesto un botón de poner guiones por eso digo lo de tres botones. Luego copie el contenido de ese botón y lo puse en el evento keyup con la condición de que cuando la longitud sea 9 que son la longitud de los números de teléfono me los ponga. Que tu quieres que sea con otras longitudes entonces puedes usar el select case o hacer if anidados.

Respuesta
1
 Private x As Integer
    Private Sub txttelefono_TextChanged(sender As Object, e As EventArgs) Handles txttelefono.TextChanged
        x += 1
        If x = 4 Then
            txttelefono.Text &= " "
            txttelefono.Select(txttelefono.Text.Length, 0)
        End If
        If txttelefono.TextLength + 9 = 14 Then
            x = -5
        End If
    End Sub

yo implemente ese, funciona de la siguiente manera:

1: Ingresas un numero de teléfono "5555 5555". hasta ahí la variable privada x=9.

2:Borras los números sin el espacio, hasta ese punto x=14, entonces mi código valida que si el length + 9 (ese 9 es para logar los 14 que ha acumulado x) es igual a 14 entonces le reasigne el valor de -5 a X y así puedes borrar hasta que x=0, en ese momento tu textbox estará vacío por ende al insertar números de nuevo el guion se podrá agregar.

Pd:

    Private x As Integer
    Private Sub txttelefono_TextChanged(sender As Object, e As EventArgs) Handles txttelefono.TextChanged
        x += 1
        Select Case x
            Case 4
                txttelefono.Text = txttelefono.Text & "-"
                txttelefono.Select(txttelefono.Text.Length, 0)
            Case 13
                x = -5
        End Select
    End Sub

con tu código :) 

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas