Extraccion de datos del texbox

Iniciado por Di3goXx, 6 Octubre 2011, 04:45 AM

0 Miembros y 1 Visitante están viendo este tema.

Di3goXx

hola denuevo aca teniendo una nueva pequeña duda en c#
por ejemplo si quiero extraer un numero de un texbox hago el


int variable
variable=Int32.Parse(texbox1.Text)


pero si no se ingresa nada el programa se frezea o  se para
como hago para que si no hay datos(numeros) que no haga esa extraccion para que no se frezee. :rolleyes:

$Edu$

Podrias usar manejo de errores, tambien hay una funcion que devuelve true o false si se puede convertir y de paso lo guarda:

Código (csharp) [Seleccionar]

int variable;
bool conver

conver = int.TryParse(textbox1.text, out variable))

if conver == false MessageBox.Show("Introduzca un numero valido!");



Y lo del manejo de errores es con el Try-Catch
Código (csharp) [Seleccionar]

int variable;

Try {
variable = int.Parse(textbox1.text)
}
catch {MessageBox.Show("Introduzca un numero valido!"); }


Algo asi, talvez esta mal pero espero que entiendas y sea lo que pedias.

Di3goXx

Lo del try lo intente y me salio; pero en otro problema lo intente con una variable string y no salia el mensaje sera que se agrega otra cosa o no funciona con string ??? lo intente con char y si me salio

$Edu$

Cual de los 2 try? xD Y no entendi bien que quieres decir, la idea es convertir un string a integer, si este no se puede convertir porque es una letra por ejemplo, entonces manejamos ese error y hacemos salir un aviso de que ese numero que ingreso no es valido, es eso simplemente.

Di3goXx

#4
No me refiero al try, cuando declaro una variable en string supongo que deberia salir el mensaje de "ingresa una letra" si es que no se pone nada pero al ejecutar no me sale ni un messagebox. Creo que al no poner nada lo considera como si fuera un espacio de la barra espaciadora..
por ejemplo

string letra;
           try
           {
               letra = textBox1.Text;
              if (letra.Equals ("A"))
                  label2.Text="tu letra es A";
           }
           catch { MessageBox.Show("Ingresa una letra"); }

al no ingresar nada y darle click al boton no me sale el mensaje de ingresa una letra..

$Edu$

Porque usas Equals? Has leido algun buen tutorial de C# ? hay q leer y leer asi se aprende, busca en google: Lenguaje de programacion C# que es un tutorial en pdf de 300 paginas, las vas leyendo de a poco, repasando, y seguir leyendo.

De todos modos te contesto tu duda, pero a ver si te lees ese tutorial que te digo, veras como se te van muchas dudas ;)
Vos declaras el string letra, luego le asignas el contenido de tu textbox1, pero que tipo de dato crees q es el text1.text ? un string! Entonces si escribe "3173761" sera string igual, lo vimos en el ejemplo anterior que por algo tenias que hacer la conversion de string a integer xD
Digo esto porque estas usando Equals, que si mal no recuerdo es para verificar la igualdad del tipo de los objetos y en tu caso dara tru porque letra es string y "A" como lo pusiste entre comillas es un string, que hubiera sido lo mismo a que pongas "jdawbhdab"

Ahora que ya sabes eso, seguimos con lo que talvez estas intentando hacer, quieres que el usuario ingrese una letra a tu textbox y verifica si es la letra "A", bueno es tan simple como poner if (letra == "A") label2.Text = "tu letra es A";
A cambio de Equals, ahora estamos verificando los valores de las variables, no su tipo.


Ahora si, te digo que cuando un textbox1 esta vacio, en realidad esta vacio pero es "" su valor, entonces no habra errores ninguno y aca no se usan manejos de errores ( Try-Catch) sino que se hace una verificacion antes de lo que quieras hacer, poniendo:

Código (csharp) [Seleccionar]

if (letra == "") MessageBox.Show("Ingresa una letra");


Saludos!

Keyen Night

#6
Es algo complicado que entiendas porque pasa eso porque eres nuevo en el tema, sin animos de ofender ;D te explicare lo mas sencillo que pueda

Yo se lo que intentas hacer, estas tratando de capturar un error cuando no se ingresa una letra, pero estas usando para comparar la función .Equals y una de sus caracteristicas es que el parametro de entrada es System.Object que soporta todos los tipos, así que como soporta todos los tipos si el usuario coloca un número o una letra o cualquier cosa, Equals si los 2 objetos no son iguales simplemenete retorna false sin errores. Equals puede comparar incluso una imagen con una letra aunque no tenga sentido.

Como dicen arriba te recomiendo leer muchísimo y prácticar aún más.
La Fé Mueve Montañas...
                                    ...De Dinero

La programación es más que un trabajo es más que un hobby es una pasión...

Di3goXx

#7
Ya no se que decir luego de esas palisas  :-[                  
:laugh:
pero para resumir
cuando se usa la verificacion de errores o el if ?
es que yo usaba el try catch  como me dijo $edu$ para que no se freeze el programa si no se ponia nada pero supongo al usar el if le puedo poner return...

Keyen Night

En resumen if lo vas a usar para comprobar cualquier condición y try para capturar error. Como ya te habia dicho $Edu$, la mayoria de los tipos tienen TryParse, que devuelve false cuando no se pudo convertir.

Código (C#) [Seleccionar]
int variable;
bool conver;

conver = int.TryParse(textbox1.text, out variable));

if (conver == false)
{
MessageBox.Show("Introduzca un numero valido!");
}
La Fé Mueve Montañas...
                                    ...De Dinero

La programación es más que un trabajo es más que un hobby es una pasión...