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?

Était-ce utile?

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top