none
Posicion del punto o coma RRS feed

  • Pregunta

  • Buenas tengo este codigo y no doy con la combinacion adecuada para manejar la coma o el punto de posicion en una cadena numerica 

    Lo quiero lograr es que cuando escriba una cadena me deje poner la coma en la posicion que yo quiera menos siendo el primer caractere que eso esta conseguido por el compañero asier 

    Ejemplos que busco 0,1 / 10,12 / 123,1

    Ejemplos no validos ,0 

    Otra cosa que estoy intentando es que si pulso . o , escriba cualquiera de los 2 tampoco lo e conseguido

    Gracias a todos por vuetro tiempo

    Dim textControl As TextBox = CType(sender, TextBox)
            If Not Char.IsControl(e.KeyChar) AndAlso Not Char.IsDigit(e.KeyChar) AndAlso e.KeyChar <> "."c Then
                ' Si no es un carácter de control, un número o un punto no es válido
                e.Handled = True
            ElseIf e.KeyChar = "."c AndAlso (textControl.SelectionStart <> 1 Or textControl.Text.IndexOf("."c) >= 0) Then
                ' Si es un punto y es el primer carácter o existe otro no es válido
                e.Handled = True
            End If

    sábado, 6 de febrero de 2016 7:46

Respuestas

  • Otra cosa que estoy intentando es que si pulso . o , escriba cualquiera de los 2 tampoco lo e conseguido

    ¿Te refieres a que independientemente de cual se pulse se escriba siempre una coma?

    Puedes simplemente reemplazar un carácter por otro:

            Dim textControl As TextBox = CType(sender, TextBox)
    
            If e.KeyChar = "."c Then e.KeyChar = ","
    
            If Not Char.IsControl(e.KeyChar) AndAlso Not Char.IsDigit(e.KeyChar) AndAlso e.KeyChar <> ","c Then
                ' Si no es un carácter de control, un número o una coma no es válido
                e.Handled = True
            ElseIf e.KeyChar = ","c AndAlso (textControl.SelectionStart = 0 Or textControl.Text.IndexOf(","c) >= 0) Then
                ' Si es una coma y es el primer carácter o existe otra no es válido
                e.Handled = True
            End If


    Píldoras .NET
    Artículos, tutoriales y ejemplos de código .NET

    Píldoras JS
    Artículos, tutoriales y ejemplos de código JavaScript, HTML5, CSS3, ...


    • Editado Asier Villanueva domingo, 7 de febrero de 2016 11:46
    • Marcado como respuesta JETET domingo, 7 de febrero de 2016 18:55
    domingo, 7 de febrero de 2016 11:45

Todas las respuestas

  • Podrías usar Regex.IsMatch con una expresión regular tal como esta:

    "[0-9](\.|,)[0-9]*"

    que puedes modificar a tu gusto si quieres permitir o no permitir ciertas combinaciones.

    Aplicándola sobre el texto "completo", eso te permitiría rechazar cualquier carácter tal que ocasione que el texto tecleado no cumpla el patrón establecido en la expresión.

    domingo, 7 de febrero de 2016 8:47
  • Otra cosa que estoy intentando es que si pulso . o , escriba cualquiera de los 2 tampoco lo e conseguido

    ¿Te refieres a que independientemente de cual se pulse se escriba siempre una coma?

    Puedes simplemente reemplazar un carácter por otro:

            Dim textControl As TextBox = CType(sender, TextBox)
    
            If e.KeyChar = "."c Then e.KeyChar = ","
    
            If Not Char.IsControl(e.KeyChar) AndAlso Not Char.IsDigit(e.KeyChar) AndAlso e.KeyChar <> ","c Then
                ' Si no es un carácter de control, un número o una coma no es válido
                e.Handled = True
            ElseIf e.KeyChar = ","c AndAlso (textControl.SelectionStart = 0 Or textControl.Text.IndexOf(","c) >= 0) Then
                ' Si es una coma y es el primer carácter o existe otra no es válido
                e.Handled = True
            End If


    Píldoras .NET
    Artículos, tutoriales y ejemplos de código .NET

    Píldoras JS
    Artículos, tutoriales y ejemplos de código JavaScript, HTML5, CSS3, ...


    • Editado Asier Villanueva domingo, 7 de febrero de 2016 11:46
    • Marcado como respuesta JETET domingo, 7 de febrero de 2016 18:55
    domingo, 7 de febrero de 2016 11:45