Calcoli con numeric up down

di il
1 risposte

Calcoli con numeric up down

Ciao scusate ma sono nuovo....
ho un form con 2 numericupdown nu1 e nu2
2 bottoni b1 e b2
ed una text box t
voglio fare in modo che premendo il b1 il valore contenuto nella textbox si sommi al nu1 e lo stesso per b2 e nu2...
ho fatto una cosa del genere, ma non funziona

Public Class Form1
Dim a, b, c As Integer
Private Sub t_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles t.TextChanged
t.Text = Val(a)
End Sub
Private Sub nu1_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles nu1.ValueChanged
nu1.Value = Val(b)
End Sub

Private Sub nu2_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles nu2.ValueChanged
nu2.Value = Val(c)
End Sub
Private Sub b1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles b1.Click
Dim a As Double
Dim b As Double
nu1.Value = b + a

End Sub

Private Sub b2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles b2.Click
Dim c As Double
Dim a As Double
nu2.Value = c + a
End Sub

qualcuno sa dirmi dove ho sbagliato?
grazieee

1 Risposte

  • Re: Calcoli con numeric up down

    Di errori ne hai fatti tanti, e sinceramente non è chiaro neanche quello che volevi fare, da quello che hai scritto tu vuoi che quando premi il button1 il numericupdown1 scatti in avanti del numero contenuto nella textbox1, mentre quando premi il button2 il valore della numericupdown2 scatti in avanti del valore contenuto sempre nella textbox1 di fatto il codice molto semplicemente è questo:

    Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    NumericUpDown1.Value = NumericUpDown1.Value + CInt(TextBox1.Text)
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    NumericUpDown2.Value = NumericUpDown2.Value + CInt(TextBox1.Text)
    End Sub
    End Class

    attenzione che quando arrivi al massimo valore che hai impostato per il numericupdown ti da errore, se non hai un range conosciuto dovresti mettere un ciclo if che controlla se la somma è superiore al numericupdown.maximum e che in caso lo alzi

    gli errori che hai fatto sono stati intanto sulla dichiarazione di variabili, se vuoi che una variabile si possa usare in tutte le sub della classe devi usare la dichiarazione public e non dim, quindi diventava del tipo:
    Public Class Form1
    Public a, b, c As Integer
    e dopo non devi più ridichiararle con dim all'interno di ogni sub in cui le usi se no credo che le setti di nuovo a null ma penso invece ti dia errore, poi numericupdown.value è un integer non un double e textbox.text è una stringa, per convertire il tipo di dati usa le funzioni Cint(), Cdec()

    poi quando scrivi t.text=a non stai dicendo che il numero scritto nel textbox si salvi nella variabile "a" ma che nel textbox appare il valore di "a" quindi nel momento in cui tu provi a cambiare il testo questo continua a ridiventare il valore di "a" che tra l'altro non hai impostato, comunque se tu lo avessi impostato come a=10 ogni volta che provavi a cambiare il testo questo sarebbe tornato 10, stesso errore per gli numericupdown tu hai scritto ogni volta che il valore del numeric updown cambia tu impostamelo di nuovo su "b" o "c" quindi di fatto diventa impossibile cambiarli
Devi accedere o registrarti per scrivere nel forum
1 risposte