0
votes

System.Formatxception: "La chaîne d'entrée n'était pas dans un format correct." Vb.net

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." xxx

Le code fonctionne bien et la multiplication fonctionne bien si je ne le supprime pas jusqu'à vide.


1 commentaires

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 étant vide. Qu'est-ce que son texte est dans ce cas? Est-ce un nombre valide?


3 Réponses :


0
votes

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: xxx


0 commentaires

0
votes

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


0 commentaires

0
votes

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.

Vous pouvez vérifier que la zone de texte a un entier valide avant d'effectuer des opérations sur elle. P>

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


1 commentaires

@Teaparty, s'il vous plaît définir option strict à sur sur dans le projet, avec option Strict COMPILER compilé vous avertira des erreurs de type possible avant d'exécuter l'application .