Impossibile convertire Zero a int32 dal testo
-
23-09-2019 - |
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?
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));