Test Foro de elhacker.net SMF 2.1

Programación => Programación General => .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 (csharp) [Seleccionar]
private void soloNumeros(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 obj = sender as TextBox;

if (e.KeyChar == '.' && obj.Text.IndexOf('.') > 0)
e.Handled = true;
else
e.Handled = false;
}
else
e.Handled = true;
}
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í:
Reg-Exp: ^(?:\+|-)?\d+\.\d+$
PoC:
-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 (csharp) [Seleccionar]
string strCadena = '-1.2';
string strRegExp = "^(?:\\+|-)?\\d+\\.\\d+$";

if (System.Text.RegularExpressions.Regex.IsMatch(strCadena, strRegExp)){
  System.Console.WriteLine("Valido");
}else{
  System.Console.WriteLine("Invalido");
}
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 (C#) [Seleccionar]

            string Comprobar = "Hola";
            long Dft = 0;

            bool EsNumerico = long.TryParse(Comprobar, out Dft);

            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:


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 (csharp) [Seleccionar]

bool Validar Numero(string text) {
  return System.Text. RegularExpressions.Regex.IsMatch(text, @"^[+-]?\d+(?:\.\d+)?$");
}


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 (csharp,7) [Seleccionar]

private void soloNumeros(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
|| int.TryParse(e.KeyChar.ToString())
{
TextBox obj = sender as TextBox;

if (e.KeyChar == '.' && obj.Text.IndexOf('.') > 0)
e.Handled = true;
else
e.Handled = false;
}
else
e.Handled = true;
}


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 (csharp) [Seleccionar]
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
Cita de: 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"


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: