Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: oscarj24 en 18 Abril 2010, 22:52 pm



Título: Validar textbox numerico en C#
Publicado por: oscarj24 en 18 Abril 2010, 22:52 pm
Hola, sere claro, tengo que validar un textbox, que solo acepte numeros en double. El problema está en que quiero escribir un real y debo poner el "." si es que se trata de un decimal o el signo "-" si es que es un numero negativo. Intente hacer un ejemplo pero tiene errores en la linea 6, aqui esta:

Código
  1. private void soloNumeros(object sender, KeyPressEventArgs e)
  2. {
  3. if (e.KeyChar == (char)Keys.Back
  4. || e.KeyChar == (char)Keys.Delete
  5. || e.KeyChar == (char)Keys.Left
  6. || e.KeyChar == (char)Keys.Right
  7. || IsNumber(e.KeyChar.ToString()))
  8. {
  9. TextBox obj = sender as TextBox;
  10.  
  11. if (e.KeyChar == '.' && obj.Text.IndexOf('.') > 0)
  12. e.Handled = true;
  13. else
  14. e.Handled = false;
  15. }
  16. else
  17. e.Handled = true;
  18. }
  19.  


Título: Re: Validar textbox numerico en C#
Publicado por: Shell Root en 18 Abril 2010, 23:17 pm
Podes crear una expresión regular algo así:
Código:
Reg-Exp: ^(?:\+|-)?\d+\.\d+$
PoC:
Código:
-1.2
1.2


Título: Re: Validar textbox numerico en C#
Publicado por: oscarj24 en 18 Abril 2010, 23:25 pm
no entendi lo que quisiste explicarme, si puedes implementalo en el codigo que coloqué a ver si asi te comprendo mejor, gracias


Título: Re: Validar textbox numerico en C#
Publicado por: Shell Root en 18 Abril 2010, 23:31 pm
Creo que eso es masomenos así, lo codee de memoria, así que puede tener errores.

Código
  1. string strCadena = '-1.2';
  2. string strRegExp = "^(?:\\+|-)?\\d+\\.\\d+$";
  3.  
  4. if (System.Text.RegularExpressions.Regex.IsMatch(strCadena, strRegExp)){
  5.   System.Console.WriteLine("Valido");
  6. }else{
  7.   System.Console.WriteLine("Invalido");
  8. }


Título: Re: Validar textbox numerico en C#
Publicado por: oscarj24 en 19 Abril 2010, 00:19 am
tiene errores jaja, perdoname pero no comprendo tu logica y bueno.. gracias de todas formas, aun asi no lo logre  :huh:


Título: Re: Validar textbox numerico en C#
Publicado por: Shell Root en 19 Abril 2010, 01:07 am
wtf! apoco nunca haz usado expresiones regulares?


Título: Re: Validar textbox numerico en C#
Publicado por: Keyen Night en 19 Abril 2010, 01:16 am
oscarj24, Date una vuelta y vuelves ._.

http://es.wikipedia.org/wiki/Expresi%C3%B3n_regular.

Si se te hace muy dificil entonces:
Código
  1.            string Comprobar = "Hola";
  2.            long Dft = 0;
  3.  
  4.            bool EsNumerico = long.TryParse(Comprobar, out Dft);
  5.  
  6.            MessageBox.Show(Convert.ToString(EsNumerico));

Donde EsNumerico es True si es numero y False si no es.


Título: Re: Validar textbox numerico en C#
Publicado por: JuanRaGD en 19 Abril 2010, 02:05 am
Hola.
No te entendi bien la pregunta, pero si lo q quiere es q solo ingrese double en el txtbox  yo lo aria asi:

Código:
double numero = 0;
        try
        {
            numero = Convert.ToDouble(TextBox1.Text);
        }
        catch
        {
            Label1.Text = "numero invalido";
        }

Bueno espero que te sirva   :)


Título: Re: Validar textbox numerico en C#
Publicado por: raul338 en 19 Abril 2010, 03:28 am
Código
  1. bool Validar Numero(string text) {
  2.   return System.Text. RegularExpressions.Regex.IsMatch(text, @"^[+-]?\d+(?:\.\d+)?$");
  3. }
  4.  

con eso validas la entrada, ahora si quieres validar "en vivo", usa un masked textbox o similar, o si quieres hacerlo a tu estilo puedes probar

Código
  1. private void soloNumeros(object sender, KeyPressEventArgs e)
  2. {
  3. if (e.KeyChar == (char)Keys.Back
  4. || e.KeyChar == (char)Keys.Delete
  5. || e.KeyChar == (char)Keys.Left
  6. || e.KeyChar == (char)Keys.Right
  7. || int.TryParse(e.KeyChar.ToString())
  8. {
  9. TextBox obj = sender as TextBox;
  10.  
  11. if (e.KeyChar == '.' && obj.Text.IndexOf('.') > 0)
  12. e.Handled = true;
  13. else
  14. e.Handled = false;
  15. }
  16. else
  17. e.Handled = true;
  18. }
  19.  

Espero que te sirva, lo hice todo al vuelo


Título: Re: Validar textbox numerico en C#
Publicado por: oscarj24 en 19 Abril 2010, 05:09 am
Hola, gracias.. pero preferi hacerlo a mi estilo
pero al momento de la compilacion me salto un error en este punto:

Código
  1. int.TryParse(e.KeyChar.ToString()))

ya que dice:

'Ninguna sobrecarga para el método 'TryParse' acepta '1' argumentos'

espero me puedas ayudar y gracias  ;D


Título: Re: Validar textbox numerico en C#
Publicado por: raul338 en 19 Abril 2010, 12:49 pm
perdon xD XD

int.TryParse(e.KeyChar.ToString(), null)

El segundo parametro es el nuevo int a "parsear"


Título: Re: Validar textbox numerico en C#
Publicado por: Novlucker en 19 Abril 2010, 14:24 pm
Validadores :rolleyes:

Saludos


Título: Re: Validar textbox numerico en C#
Publicado por: oscarj24 en 19 Abril 2010, 20:32 pm
perdon xD XD

int.TryParse(e.KeyChar.ToString(), null)

El segundo parametro es el nuevo int a "parsear"


Amigo, gracias por los intentos pero sigo teniendo problemas, ahora al compilar aparece lo siguiente:

Error 1 La mejor coincidencia de método sobrecargado para 'int.TryParse(string, out int)' tiene algunos argumentos no válidos

Error 2 Argumento '2': no se puede convertir de '<null>' a 'out int'

espero puedas seguir ayudandome XD  ;D


Título: Re: Validar textbox numerico en C#
Publicado por: Novlucker en 19 Abril 2010, 20:41 pm
Por que no usar validadores de los que ya vienen con .NET?

Saludos


Título: Re: Validar textbox numerico en C#
Publicado por: oscarj24 en 19 Abril 2010, 22:10 pm
Porque me anulan la puntuacion y yo necesito que se puedan poner puntos para el caso de un numero decimal y signo negativo si es que se requiere


Título: Re: Validar textbox numerico en C#
Publicado por: raul338 en 20 Abril 2010, 01:02 am
nunca use validadores en windows xD xD

amigo, entonces declara un int "para nada" y pasalo como 2º parametro, piensa un poco che :P (sin ofender)


Título: Re: Validar textbox numerico en C#
Publicado por: oscarj24 en 20 Abril 2010, 05:16 am
jaja gracias y ya salio pero el problema es que ahora necesito colocarle el signo negativo  :laugh: