Werte in Progressbar anzeigen und abziehen

  • VB.NET

Es gibt 28 Antworten in diesem Thema. Der letzte Beitrag () ist von SpaceyX.

    Beim ersten mal funktionierts ja auch aber beim Zweiten mal werden irgendwelche Werte falsch einbezogen.
    Hier mal das Projekt bzw mein Code:

    VB.NET-Quellcode

    1. Public Class Progressbar
    2. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    3. '********************************************
    4. 'Static, damit Variablen erhalten bleiben
    5. Dim Maxwert As Integer
    6. Static MaxwertNeu As Integer
    7. Static Wert As Integer
    8. '********************************************
    9. 'Meldung, wenn keine Eingabe in Textbox
    10. If TextBox1.Text = "" Then
    11. MsgBox("Eingabe nötig")
    12. Exit Sub
    13. End If
    14. '------------------------------
    15. If Wert = 1 Then ProgressBar1.Maximum = MaxwertNeu
    16. If Wert = 1 Then GoTo Berechnung
    17. '------------------------------
    18. Maxwert = 250
    19. ProgressBar1.Maximum = Maxwert
    20. Wert = 1 'Steuervariable, damit ab zweitem Durchlauf Maxwert nicht auf 250 gesetzt wird
    21. '********************************************
    22. Berechnung:
    23. 'Eigentliche Berechnung
    24. MaxwertNeu = ProgressBar1.Maximum - TextBox1.Text
    25. If MaxwertNeu <= 0 Then GoTo PunkteVerbraucht
    26. 'MsgBox(MaxwertNeu)
    27. 'ProgressBar1.Value = 0
    28. If Wert = 1 Then MsgBox(MaxwertNeu)
    29. ProgressBar1.Value = 0
    30. ProgressBar1.Value = MaxwertNeu
    31. 'Maxwert = MaxwertNeu
    32. TextBox1.Text = ""
    33. Exit Sub
    34. '********************************************
    35. PunkteVerbraucht:
    36. 'Punkte verbraucht, also Zahl <= 250
    37. '-----
    38. 'Varaiblen zurücksetzen, da sie sonst trotz
    39. 'schließen der Userform erhalten bleiben
    40. Maxwert = 0
    41. MaxwertNeu = 0
    42. Wert = 0
    43. '-----
    44. MsgBox("Punkte aufgebraucht")
    45. End Sub
    46. End Class
    Dateien
    • Progressbar.exe

      (23,55 kB, 110 mal heruntergeladen, zuletzt: )
    C# Developer
    Learning C++
    GOTO? Kein OPTION STRICT ON? Grauenhaft.

    Man, man, man.
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „SpaceyX“ ()

    Nochmal zum Verständnis. Du möchtest eine "Spielfigur" programmieren, die eine Hitpoint-Anzeige hat, oder?
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o

    Rikudo schrieb:

    Was ist das Problem mit dem GoTo Befehl?
    Das ist ein Rudiment aus der Steinzeit.
    Der Code wird ganz schnell unübersichtlich und ist im Allgemeinen unpflegbar.
    Also:
    Nimm If oder so und nutze Unterprogramme zur Strukturierung Deines Quelltextes.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Ja, jetzt hab ichs, ENDLICH!!
    Das Problem war das der Wert bevor er verringert wird nochmal auf 250 Gesetzt wird.
    Also der ganze Code sieht nun so aus:

    VB.NET-Quellcode

    1. Public Class Progressbar
    2. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    3. '********************************************
    4. 'Static, damit Variablen erhalten bleiben
    5. Static Maxwert As Integer
    6. Static MaxwertNeu As Integer
    7. Static Wert As Integer
    8. '********************************************
    9. 'Meldung, wenn keine Eingabe in Textbox
    10. If TextBox1.Text = "" Then
    11. MsgBox("Eingabe nötig", MsgBoxStyle.Information, Title:="Info")
    12. Exit Sub
    13. End If
    14. '------------------------------
    15. If Wert = 1 Then ProgressBar1.Maximum = MaxwertNeu
    16. If Wert = 1 Then GoTo Berechnung
    17. '------------------------------
    18. Maxwert = 250
    19. ProgressBar1.Maximum = Maxwert
    20. Wert = 1 'Steuervariable, damit ab zweitem Durchlauf Maxwert nicht auf 250 gesetzt wird
    21. '********************************************
    22. Berechnung:
    23. 'Eigentliche Berechnung
    24. MaxwertNeu = ProgressBar1.Maximum - TextBox1.Text
    25. If MaxwertNeu <= 0 Then GoTo PunkteVerbraucht
    26. 'MsgBox(MaxwertNeu)
    27. 'ProgressBar1.Value = 0
    28. If Wert = 1 Then MsgBox(MaxwertNeu)
    29. ProgressBar1.Maximum = 250
    30. ProgressBar1.Value = MaxwertNeu
    31. 'Maxwert = MaxwertNeu
    32. TextBox1.Text = ""
    33. Exit Sub
    34. '********************************************
    35. PunkteVerbraucht:
    36. 'Punkte verbraucht, also Zahl <= 250
    37. '-----
    38. 'Varaiblen zurücksetzen, da sie sonst trotz
    39. 'schließen der Userform erhalten bleiben
    40. Maxwert = 0
    41. MaxwertNeu = 0
    42. Wert = 0
    43. '-----
    44. MsgBox("Punkte aufgebraucht")
    45. End Sub
    46. End Class

    Ob der Wert jetzt sauber oder unsauber ist ist mir jetzt nicht so wichtig. Er funktioniert und das ist alles.
    Danke an alle die mir geholfen haben, trotzdem! :)
    --> Thread kann geschlossen werden
    C# Developer
    Learning C++
    Und wenn nun jemand "abc" in Deine Textbox eingibt, hat es sich erledigt mit Deinem Programm. Einfach sagen: "Mir egal, ob es sauber ist", ist wohl mit das engstirnigste, was man von sich geben kann.

    Schon mal an OOP gedacht oder Dich damit auseinander gesetzt? Schon mal daran gedacht, dass GOTO in .NET überhaupt nichts mehr verloren hat? Mach es anständig und wurschtel Dir nicht irgendwas zusammen. Ich hätt einen OOP-Ansatz für Dich, wenn es Dich noch interessiert.
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o