Domanda

Ho il seguente codice per fare un po 'molto semplice convalida per una casella di testo

    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);

Questo funziona bene quando il testo! = 0, ma quando il testo == 0 ottengo una FormatException dire la stringa non è del formato corretto. Come posso correggere questo?

È stato utile?

Soluzione

Il tuo problema è qui:

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

Si sta controllando la lunghezza di una casella di testo e impostare il testo di un altro. Cambiarlo in questo modo:

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

Inoltre, c'è un motivo per cui stai usando Convert.ToString(0) invece di "0"? Non particolarmente consiglia di utilizzare questo approccio per la convalida dei dati, ma questo dovrebbe risolvere il problema.

Altri suggerimenti

Come non si può essere sicuri che l'utente della vostra casella di testo scriverà una corretta intero, mi sento di raccomandare di utilizzare Int32.TryParse () al posto di Convert.ToInt32. Così, sarete in grado di gestire facilmente i casi di errore.

Sarebbe questo codice di fare?

    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);

Spero che questo aiuti, I migliori saluti, Tom.

Questo è un modo semplice per gestire una casella di testo vuoto

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);

Vorrei anche salvare i valori della casella di testo alle variabili temporanee e quindi effettuare le comparazioni a meno che se si voleva forzare uno 0 nella casella di testo quando è vuoto.

int inStockAmt = Convert.ToInt32 (string.IsNullOrEmpty (txtInStock.Text) 0:? Int.Parse (txtInStock.Text));

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top