Zeitfenster Bug im Programm!

  • VB.NET
  • .NET (FX) 1.0–2.0

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von Cheffboss.

    Zeitfenster Bug im Programm!

    Moin! :)
    Ich möchte gerne dass man eine Zeit einspeichert.
    Und sobald der Zeitpunkt erreicht ist, soll sich ein neues Fenster öffnen.
    Aus irgendeinem Grund, denn ich leider noch nicht verstehe.
    Öffnet sich das gleiche Fenster gleich zweimal.
    Das bedeute wenn ich das neue Fenster schließe, öffnet es sich sofort nochmal!
    Ich habe im Anhang mein Projekt, außerdem den Code noch eingefügt.
    Freue mich auf eure Unterstützung!
    BIG THX

    VB.NET-Quellcode

    1. Option Strict On
    2. Public Class Form1
    3. Dim guthaben, guthaben_abziehen As Decimal
    4. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    5. 'Me.Timer1.Interval = 1000
    6. guthaben = CDec(0.8741D)
    7. guthaben_abziehen = CDec(0.0001)
    8. End Sub
    9. Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
    10. guthaben -= guthaben_abziehen
    11. Dim RestZeit As String = (guthaben * 60).ToString("0#.#0")
    12. Me.lblZeitÜbrig.Text = RestZeit
    13. ' Warnen bei wenig Zeit!
    14. If RestZeit = Me.TextBox1.Text Or
    15. RestZeit = Me.TextBox2.Text Or
    16. RestZeit = Me.TextBox3.Text Then
    17. Me.Timer1.Enabled = False
    18. Dim Form2 As New Form2
    19. Form2.ShowDialog() '<--- BUG (Fenster wird zweimal geöffnet!)
    20. Me.Timer1.Enabled = True
    21. End If
    22. End Sub
    23. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    24. Me.Timer1.Enabled = True
    25. Me.Button1.Enabled = False
    26. End Sub
    27. End Class


    edit:
    Datei anhang gelöscht!
    Visual Basic.NET 8o
    MS-SQL
    8o

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

    @Cheffboss Kein Bug.
    Das Programm tut genau was es soll.
    Pack die Zeile guthaben -= guthaben_abziehen vor Me.Timer1.Enabled = True:

    VB.NET-Quellcode

    1. guthaben -= guthaben_abziehen
    2. Me.Timer1.Enabled = True
    Und
    Gugst Du Dialoge: Instanziierung von Forms und Aufruf von Dialogen
    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!
    edit:

    VB.NET-Quellcode

    1. Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
    2. Dim RestZeit As String = (guthaben * 60).ToString("0#.#0")
    3. Me.lblZeitÜbrig.Text = RestZeit
    4. guthaben -= guthaben_abziehen
    5. ' Warnen bei wenig Zeit!
    6. If RestZeit = Me.TextBox1.Text Or
    7. RestZeit = Me.TextBox2.Text Or
    8. RestZeit = Me.TextBox3.Text Then
    9. Me.Timer1.Enabled = False
    10. Dim Form2 As New Form2
    11. Form2.ShowDialog()
    12. guthaben -= guthaben_abziehen '<-- HIER war der Fehler!
    13. Me.Timer1.Enabled = True
    14. End If
    15. End Sub


    Super, so geht es nun! BIG THX :)
    Aber leider verstehe ich das noch nicht,
    wieso ist die Form2 mal auf geganngen?

    Visual Basic.NET 8o
    MS-SQL
    8o

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Cheffboss“ ()

    @Cheffboss Missverständnis.
    Die Zeile muss zwei Mal rein.

    VB.NET-Quellcode

    1. Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
    2. guthaben -= guthaben_abziehen
    3. Dim RestZeit As String = (guthaben * 60).ToString("0#.#0")
    4. Me.lblZeitÜbrig.Text = RestZeit
    5. ' Warnen bei wenig Zeit!
    6. If RestZeit = Me.TextBox1.Text OrElse
    7. RestZeit = Me.TextBox2.Text OrElse
    8. RestZeit = Me.TextBox3.Text Then
    9. Me.Timer1.Enabled = False
    10. Using dlg As New Form2
    11. dlg.ShowDialog()
    12. End Using
    13. guthaben -= guthaben_abziehen
    14. Me.Timer1.Enabled = True
    15. End If
    16. End Sub

    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!