Pregunta

Tengo el siguiente código para hacer una validación muy simple para un cuadro de texto

    if(txtInStock.Text.Length == 0)
        txtInStock.Text = Convert.ToString(0);

    if (txtInStock.Text.Length == 0)
        txtOnOrder.Text = Convert.ToString(0);

    int inStockAmt = Convert.ToInt32(txtInStock.Text);
    int onOrderAmt = Convert.ToInt32(txtOnOrder.Text);

¡Esto funciona bien cuando text! = 0, pero cuando text == 0 obtengo un formateException que dice que la cadena no es del formato adecuado. ¿Cómo puedo corregir esto?

¿Fue útil?

Solución

Tu problema está aquí:

if (txtInStock.Text.Length == 0)
    txtOnOrder.Text = Convert.ToString(0);

Estás revisando la longitud de un cuadro de texto y configurando el texto de otro. Cambiarlo a esto:

if (txtOnOrder.Text.Length == 0)
    txtOnOrder.Text = Convert.ToString(0);

Además, ¿hay una razón por la que estás usando Convert.ToString(0) en lugar de solo "0"? No recomiendo particularmente usar este enfoque para la validación de datos, pero esto debería corregir el problema.

Otros consejos

Como no puede estar seguro de que el usuario de su cuadro de texto escriba un entero correcto, recomendaría usar Int32.tryParse () en lugar de convertir.toint32. Por lo tanto, podrá manejar fácilmente los casos de error.

¿Lo haría este código?

    if(txtInStock.Text.Length == 0)
        txtInStock.Text = "0";

    if (txtInStock.Text.Length == 0)
        txtOnOrder.Text = "0";

    int inStockAmt = Convert.ToInt32(txtInStock.Text);
    int onOrderAmt = Convert.ToInt32(txtOnOrder.Text);

Espero que esto ayude, Saludos cordiales, Tom.

Esta es una forma simple de manejar un cuadro de texto vacío

if( string.IsNullOrEmpty( txtInStock.Text ))
    txtInStock.Text = "0";

if( string.IsNullOrEmpty( txtOnOrder.Text ))
    txtOnOrder.Text = "0";

int inStockAmt = Convert.ToInt32(txtInStock.Text);
int onOrderAmt = Convert.ToInt32(txtOnOrder.Text);

También guardaría los valores del cuadro de texto en variables temperadas y luego haré las comparaciones a menos que quisiera forzar un 0 en el cuadro de texto cuando esté vacío.

int instockamt = convert.toint32 (String.ISNULLOREMPTY (txtInstock.text)? 0: int.Parse (txtInstock.text));

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top