none
validar numeros que acepte punto decimal en c# RRS feed

  • Pregunta

  • holas amigos deseo su ayuda en este problema que no parece muy dificil se trata de hacer un metodo para validar numeros osea que solo me permita ingresar numeros pero tambien el punto decimal ya tengo la validacion de numeros pero cuando ingreso el punto no me permite gracias anticipadamente por las respuestas.

     

    // este codigo solo permite numeros pero deseo que tambien me permita el punto decimal.

    void validarNumeros(KeyPressEventArgs e)

    {

    if (e.KeyChar >= 48 && e.KeyChar <= 57)

    {

    e.Handled = false;

    }

    else if (e.KeyChar == 8)

    {

    e.Handled = false;

    }

    else if (e.KeyChar == 13)

    {

    e.Handled = false;

    }

    else

    {

    MessageBox.Show("Solo se Aceptan Numeros", "Mensaje del Sistema");

    e.Handled = true;

    }

    }

     

    // el control textbox validado

    private void txtmonto_KeyPress(object sender, KeyPressEventArgs e)

    {

    validarNumeros(e);

    }

    martes, 14 de octubre de 2008 21:03

Respuestas

  • Code Snippet

            private void txtmonto_KeyPress_1(object sender, KeyPressEventArgs e)

            {

                CultureInfo cc = System.Threading.Thread.CurrentThread.CurrentCulture;

                if (char.IsNumber(e.KeyChar) ||

                    e.KeyChar.ToString() == cc.NumberFormat.NumberDecimalSeparator

                    )

                    e.Handled = false;

                else

                    e.Handled = true;

            }

     

    martes, 14 de octubre de 2008 21:34
    Moderador

Todas las respuestas

  • Code Snippet

            private void txtmonto_KeyPress_1(object sender, KeyPressEventArgs e)

            {

                CultureInfo cc = System.Threading.Thread.CurrentThread.CurrentCulture;

                if (char.IsNumber(e.KeyChar) ||

                    e.KeyChar.ToString() == cc.NumberFormat.NumberDecimalSeparator

                    )

                    e.Handled = false;

                else

                    e.Handled = true;

            }

     

    martes, 14 de octubre de 2008 21:34
    Moderador
  • muchas gracias por la respuesta me ha servido bastante

    martes, 14 de octubre de 2008 22:21
  • tengo una pregunta como funciona  cultureinfo? tengo que agregar una libreria?

    domingo, 19 de febrero de 2012 5:52
  • deberias definir la linea

    using System.Globalization;

    para poder usar la clase

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    domingo, 19 de febrero de 2012 6:24

  • En caso de que quisiera poner mas textbox y no quisiera repetir tanto el codigo en sus correspondientes eventos keypress ¿se podra invocar desde los  keypress un metodo  que tenga dicho codigo,siempre esten dentro de la misma clase?
    domingo, 19 de febrero de 2012 18:59
  • Si te fijas bien eso es lo que hace Mitchellmicrosoft cuando formula la pregunta.
    miércoles, 22 de febrero de 2012 15:12
  • lo que hace mitchellmicrosoft en el evento keypress de un textbox...lo que planteo es lo siuiente: el programa pide 4 valores para evaluar cual de ellos es el de menor valor.....no digo que la solucion no este bien,me pregunto si al evento keypress escribo dicho codigo....pero desde los otros  yo quiero invocar al metodo que contiene el codigo (keypress1).

    ¿se puede hacer?

    viernes, 24 de febrero de 2012 6:26
  • Si te diriges a la ventana de propiedades, en la pestaña de eventos, puedes asociar para tus textBox restantes, el mismo manejador de eventos que tiene tu TextBox1

    Si la respuesta es correcta, marcala como correcta.
    Tambien puedes votar como util si te fue de ayuda
    DCE 5 ESTRELLAS PLATINO
    Pedro Marquez - Venezuela

    viernes, 24 de febrero de 2012 13:27
  • pues es una respuesta que ya tenia muchas gracias por tu interes....se que cada textobox tiene ese evento.

    mi idea es poner los textbox...y a cada uno activar su keypress respectivamente, pero solo a uno de ellos le escribo el codigo , ahora desde los keypress restantes quiero invocar al keypress que contiene el codigo ....... porque se mehace que ocupa espacio de mas escribir el mismo codigo 4 veces.

    domingo, 26 de febrero de 2012 7:31
  • Fíjate lo que te dice Marquez y es que solo tienes que tener un solo código y que no es necesario que para textbox crees su respectivo keypress o en otras palabras tendrás solamente.

            privatevoidtxt_KeyPress(objectsender, KeyPressEventArgse)

            {

                CultureInfocc = System.Threading.Thread.CurrentThread.CurrentCulture;

                if(char.IsNumber(e.KeyChar) ||

                    e.KeyChar.ToString() == cc.NumberFormat.NumberDecimalSeparator

                    )

                    e.Handled = false;

                else

                    e.Handled = true;

            }

    Ya que en la pestaña de eventos para cada textbox le dices que en el evento KeyPress use el evento que ya escribiste y se llama txt_KeyPress ahora bien si lo que quieres es hacer algo mas en cada evento y por eso tienes forzosamente que tener un evento para cada textbox en ese caso crea un método que reciba los parámetros object sender, KeyPressEventArgs e o en otras palabras

            privatevoidMetodo_KeyPress(objectsender, KeyPressEventArgse)

            {

                CultureInfocc = System.Threading.Thread.CurrentThread.CurrentCulture;

                if(char.IsNumber(e.KeyChar) ||

                    e.KeyChar.ToString() == cc.NumberFormat.NumberDecimalSeparator

                    )

                    e.Handled = false;

                else

                    e.Handled = true;

            }

    y desde cada evento de los textbox solo tienes que pesarle los parámetros y hacer lo siguiente.

            privatevoidtxtmonto_KeyPress_1(objectsender, KeyPressEventArgse)

            {

                  Metodo_KeyPress(sender, e)

            }

    Espero te sea de utilidad este simple aporte.

    Saludos


    Edchar

    lunes, 27 de febrero de 2012 4:49
  • try{
                   decimal valor = Convert.ToDecimal(lacajadetxt);
                  }
                  catch
                  {
                      MessageBox.Show("dato incorrecto \n vuelva a escribirlo", "ALERTA");
                      lacajadetxt.txt = null;
                      lacajadetxt.Select();
                  }

    es mejor ya q con el otro codigo puedes escribir varios puntos y no puedes borrar

    sábado, 17 de noviembre de 2012 20:11
  • Pero el problema es que no me deja borrar y no me muestra un mensaje que diga solo numeros por ejemplo que hago en ese caso.
    martes, 20 de noviembre de 2018 2:28
  • como esta eso del Select es que me marca error

    martes, 20 de noviembre de 2018 2:32
  • - como esta eso del Select es que me marca error

    Prueba con esta función.

     private void Monetario_KeyPress(object sender, KeyPressEventArgs e)
            {
                if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar) && e.KeyChar != '.')
                {
                    e.Handled = true;
                }
    
                if (e.KeyChar == '.' && (sender as TextBox).Text.IndexOf('.') > -1)
                {
                    e.Handled = true;
                }
            }


    Antonio Mata

    martes, 20 de noviembre de 2018 2:58