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:
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;
}
Podes crear una expresión regular algo así:
Reg-Exp: ^(?:\+|-)?\d+\.\d+$
PoC:
-1.2
1.2
no entendi lo que quisiste explicarme, si puedes implementalo en el codigo que coloqué a ver si asi te comprendo mejor, gracias
Creo que eso es masomenos así, lo codee de memoria, así que puede tener errores.
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");
}
tiene errores jaja, perdoname pero no comprendo tu logica y bueno.. gracias de todas formas, aun asi no lo logre :huh:
wtf! apoco nunca haz usado expresiones regulares?
oscarj24, Date una vuelta y vuelves ._.
http://es.wikipedia.org/wiki/Expresi%C3%B3n_regular.
Si se te hace muy dificil entonces:
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.
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 :)
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
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
Hola, gracias.. pero preferi hacerlo a mi estilo
pero al momento de la compilacion me salto un error en este punto:
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
perdon xD XD
int.TryParse(e.KeyChar.ToString(), null)
El segundo parametro es el nuevo int a "parsear"
Validadores :rolleyes:
Saludos
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
Por que no usar validadores de los que ya vienen con .NET?
Saludos
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
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)
jaja gracias y ya salio pero el problema es que ahora necesito colocarle el signo negativo :laugh: