2 votes

Comment faire pour que mon total se mette à jour correctement en vb.net (en utilisant l'événement textchanged) ?

Ce que j'ai dans une zone de texte est la remise. La zone de texte communique avec l'étiquette au fur et à mesure que vous tapez et la met à jour en conséquence.

Le problème est qu'une fois que le texte discount_rate.text atteint 10 ou plus, la remise est décalée de 5 centimes et augmente au fur et à mesure que le nombre augmente .

Quelqu'un peut-il me dire pourquoi ?

Private Sub discount_rate_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles discount_rate.TextChanged
    Select Case radio
        Case "one"
            If discount_rate.Text = "" Then
                Label17.Text = FormatCurrency(a_total.Text * 50)
                Label19.Text = FormatCurrency(Label17.Text * 0.06)
                a = CDbl(Label17.Text)
                b = CDbl(Label19.Text)
                Label21.Text = FormatCurrency(a + b)
            Else
                discount = discount_rate.text / 100
                discountrate = Label17.Text * discount
                dis_count1.Text = FormatCurrency(discountrate)
                Label17.Text = FormatCurrency((a_total.Text * 50) - discountrate)
                Label19.Text = FormatCurrency(Label17.Text * 0.06)
                a = CDbl(Label17.Text)
                b = CDbl(Label19.Text)
                Label21.Text = FormatCurrency(a + b)

1voto

chrissie1 Points 2853

Tout d'abord, n'utilisez jamais la virgule flottante pour les devises. Double et float sont à virgule flottante. Si vous ne savez pas pourquoi, vous devez lire ceci. .

Utilisez plutôt le format décimal.

Dans votre cas, cela donnerait quelque chose comme ceci.

Dim _total as Decimal = Convert.ToDecimal(a_total.Text)
Dim _ihavenoidea = Convert.ToDecimal(Label17.Text)
Label17.Text = FormatCurrency(_total * 50)
Label19.Text = FormatCurrency(ihavenoidea  * 0.06)
a = Convert.ToDecimal(Label17.Text)
b = Convert.ToDecimal(Label19.Text)
Label21.Text = FormatCurrency(a + b)

Et il y a aussi quelque chose à dire sur l'utilisation de noms de variables et de contrôles descriptifs, la personne qui devra maintenir votre code vous en remerciera.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X