Impossible de convertir à zéro int32 de textbox
-
23-09-2019 - |
Question
Je le code suivant pour faire une validation très simple pour une zone de texte
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);
Cela fonctionne bien lorsque le texte! = 0, mais lorsque le texte == 0 je reçois un FormatException dire la chaîne n'est pas du format approprié. Comment puis-je corriger?
La solution
Votre problème ici est:
if (txtInStock.Text.Length == 0)
txtOnOrder.Text = Convert.ToString(0);
Vous vérifier la longueur d'une zone de texte et la définition du texte d'un autre. Changer à ceci:
if (txtOnOrder.Text.Length == 0)
txtOnOrder.Text = Convert.ToString(0);
Aussi, est-il une raison que vous utilisez Convert.ToString(0)
au lieu de simplement "0"
? Je ne recommande pas particulièrement utiliser cette approche pour la validation des données, mais cela ne devrait corriger le problème.
Autres conseils
Comme vous ne pouvez pas être sûr que l'utilisateur de votre TextBox écrire un nombre entier correct, je recommande d'utiliser Int32.TryParse () au lieu de Convert.ToInt32. Ainsi, vous serez en mesure de gérer facilement les cas d'erreur.
ce code ferait?
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);
Hope this helps, Meilleures salutations, Tom.
Ceci est un moyen simple de gérer une zone de texte vide
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);
Je voudrais aussi enregistrer les valeurs de zone de texte aux variables temporaires puis effectuez les comparisions à moins que si vous vouliez forcer un 0 dans la zone de texte quand il est vide.
int = inStockAmt Convert.ToInt32 (String.IsNullOrEmpty (txtInStock.Text) 0: int.Parse (txtInStock.Text));