none
Expresion Regular para validar MaskedTextBox

    Pregunta

  • Hola buenas tardes, tengo un problema con las validaciones de un MaskedTextBox, en concreto quiero insertar los valores como 9.99 un digito, punto, dos digitos, que solo se inserten numeros, lo hize con una mascara asi #.## pero no me serviria para insertar datos mediante un Copy/Paste. y y la solucion se me ocurre con expresiones regulares, pero no le he econtrado la forma, me pueden ayudar?

    Tengo por lo pronto estas funciones:

    public bool IsNumber(string inputvalue)
            {
                Regex isnumber = new Regex(@"^-?[0-9]+(\.?[0-9]+)?$");
                return isnumber.IsMatch(inputvalue);
            }


            private void txtClaveGestion_KeyPress(object sender, KeyPressEventArgs e)
            {
                if (e.KeyChar == (char)Keys.Back
                    || e.KeyChar == (char)Keys.Delete
                    || e.KeyChar == (char)Keys.Left
                    || e.KeyChar == (char)Keys.Right
                    || IsNumber(e.KeyChar.ToString())
                    )
                {
                    TextBox tbtmp = sender as TextBox;
                    if (e.KeyChar == '.' && tbtmp.Text.IndexOf('.') > 0)
                        e.Handled = true;
                    else
                        e.Handled = false;
                }
                else
                    e.Handled = true;
            }

    gracias por la ayuda!
    lunes, 06 de julio de 2009 19:42

Respuestas

  • Pues no encontre la solucion, pero lo solucione de esta forma:

    private void tB_cve_gestion_KeyUp(object sender, KeyEventArgs e)
            {
                if (tB_cve_gestion.Text.Length == 4)
                {
                    if (Regex.IsMatch(tB_cve_gestion.Text, @"\d+\.\d\d"))
                    {
                        //MessageBox.Show(" cadena valida  hacer algo ");
                        button_buscar.Enabled = true;
                        //toolTip1.SetToolTip(this.tB_cve_gestion, "");


                    }
                    else
                    {
                        //toolTip1.SetToolTip(this.tB_cve_gestion, "No ***** asi  la cadena \\d+\\.\\d\\d ");

                    }

                }
            }
    miércoles, 08 de julio de 2009 16:42

Todas las respuestas

  • hola,

    no se si te servira, pero en este link:

    Regex that matches numeric with up to 2 decimal places

    pude ver que realizan exactamente tu consulta, por ahi hay una expresion regular que ayude.

    saludos
    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    lunes, 06 de julio de 2009 20:13
  • Pues no encontre la solucion, pero lo solucione de esta forma:

    private void tB_cve_gestion_KeyUp(object sender, KeyEventArgs e)
            {
                if (tB_cve_gestion.Text.Length == 4)
                {
                    if (Regex.IsMatch(tB_cve_gestion.Text, @"\d+\.\d\d"))
                    {
                        //MessageBox.Show(" cadena valida  hacer algo ");
                        button_buscar.Enabled = true;
                        //toolTip1.SetToolTip(this.tB_cve_gestion, "");


                    }
                    else
                    {
                        //toolTip1.SetToolTip(this.tB_cve_gestion, "No ***** asi  la cadena \\d+\\.\\d\\d ");

                    }

                }
            }
    miércoles, 08 de julio de 2009 16:42