Pourquoi si j'écris un numéro dans la zone de texte et supprimez-le jusqu'à vide, je reçois une erreur comme celle-ci
System.Formatxception: "La chaîne d'entrée n'était pas dans un format correct." P> blockQuote>
xxx pré> Le code fonctionne bien et la multiplication fonctionne bien si je ne le supprime pas jusqu'à vide. P> P>
3 Réponses :
La conversion en entier à partir d'une chaîne vide n'est évidemment pas un format valide pour effectuer un calcul car toute la chaîne est vide, que feriez-vous même de cela?
Vous pouvez résoudre ce problème en utilisant le gestionnaire d'exception try comme suit: p>
Changer légèrement votre code comme ci-dessous:
Private Sub txtPesJmlPesan_TextChanged(sender As Object, e As EventArgs) Handles txtPesJmlPesan.TextChanged Dim hasil As Integer If (Not String.IsNullOrEmpty(txtPesJmlPesan.Text)) And (cbxPesMenu.Text = "Silver") Then hasil = 15000 * Integer.Parse(txtPesJmlPesan.Text) lblPesTotal.Text = hasil ElseIf (Not String.IsNullOrEmpty(txtPesJmlPesan.Text)) And (cbxPesMenu.Text = "Gold") Then hasil = 20000 * Integer.Parse(txtPesJmlPesan.Text) lblPesTotal.Text = hasil ElseIf (Not String.IsNullOrEmpty(txtPesJmlPesan.Text)) And (cbxPesMenu.Text = "Diamond") Then hasil = 25000 * Integer.Parse(txtPesJmlPesan.Text) lblPesTotal.Text = hasil End If End Sub
Vous pouvez vérifier que la zone de texte a un entier valide avant d'effectuer des opérations sur elle. P> textchanged code> sera exécuté pour chaque modification, même lorsque l'utilisateur efface la zone de texte.
Avec chaîne vide
integer.parse code> lancera une exception.
Private Sub txtPesJmlPesan_TextChanged(sender As Object, e As EventArgs) Handles txtPesJmlPesan.TextChanged
Dim hasil As Integer
If Integer.TryParse(txtPesJmlPesan.Text, hasil) = False Then
lblPesTotal.Text = "0" ' Or something else
Exit Sub
End If
If (cbxPesMenu.Text = "Silver") Then
lblPesTotal.Text = (15000 * hasil).ToString()
ElseIf (cbxPesMenu.Text = "Gold") Then
lblPesTotal.Text = (20000 * hasil).ToString()
ElseIf (cbxPesMenu.Text = "Diamond") Then
hasil = 25000 * hasil
lblPesTotal.Text = (25000 * hasil).ToString()
End If
End Sub
@Teaparty, s'il vous plaît définir option strict code> à
sur code> sur code> dans le projet, avec
option Strict code> COMPILER compilé vous avertira des erreurs de type possible avant d'exécuter l'application .
Avez-vous réellement cherché à voir quelle était la chaîne d'entrée lorsque l'exception a été lancée? Cela devrait être assez évident pourquoi il ne pouvait pas être converti en un numéro si vous le regardez. Vous parlez de la zone de texte code> code> étant vide. Qu'est-ce que son
texte code> est dans ce cas? Est-ce un nombre valide?