Restzeit von einem Timer abfragen

  • VB.NET

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

    Restzeit von einem Timer abfragen

    Ich habe Timerintervall auf 1 Minute eingestellt und rufe ein Mal in der Minute eine Prozedur auf.
    Ich möchte gerne die Restzeit bis zum nächsten Aufruf (oder die bisher abgelaufene Zeit) in Sekunden anzeigen.
    Ich habe aber keine Möglichkeit gefunden, die Restzeit von einem Timer zu ermitteln.
    Momentan löste ich das Problem, indem ich einen zweiten Timer mit einem Intervall von 1 Sekunde starte und die Events zähle. Beginne bei 60 und zähle runter bis 0. Bei 0 angekommen beginne ich wieder bei 60.
    Gibt es eine bessere Möglichkeit?
    Kann ich irgendwie die Restzeit oder die schon abgelaufene Zeit von einem Timer bestimmen?

    Gruss
    soweit ich weiß geht dies nicht; und selbst wenn brauchst du sowieso einen zweiten timer der das label (oder was du zum anzeigen des countdowns benutzt) aktualisiert ;)

    also ich würd sagen, du hast schon die beste und einfachste möglichkeit genommen :))
    Ich kenn mich in dem Bereich nicht so aus, aber hier mal meine Idee :D

    VB.NET-Quellcode

    1. Public Class Form1
    2. Dim EineMinute As Integer = 60
    3. Dim SekundenZähler As Integer
    4. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    5. End Sub
    6. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    7. Timer1.Interval = 60000
    8. Timer2.Interval = 1000
    9. Timer1.Start()
    10. Timer2.Start()
    11. End Sub
    12. Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    13. Label1.Text += 1
    14. End Sub
    15. Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick
    16. SekundenZähler += 1
    17. End Sub
    18. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    19. Label2.Text = EineMinute - SekundenZähler
    20. End Sub
    21. End Class

    Ich glaube aber, diese Metohde ist zu kompliziert :D:D
    Oh.
    Danke für die Lorbeeren Phil.
    Aber auch schade, dass es nicht möglich ist.
    Denn momentan starte ich in meinem Programm 16 Minutentimer zu unterschiedlichen Zeiten.
    Wenn es möglich wäre, die Restzeit eines Timers zu bestimmen, bräuchte ich nur einen Sekundentimer. Da es aber nicht geht, brauche ich nun 16 Sekundentimer.

    Gruss
    Hi,
    hab mir mal ne Lösung ausgedacht, mit der du nur ein Timer brauchst:

    VB.NET-Quellcode

    1. Public Class Form1
    2. Dim Zaehl(16) As Single, Bis(16) As Single
    3. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    4. Timer1.Interval = 1000
    5. End Sub
    6. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    7. Zaehl(1) = 0
    8. Bis(1) = 60
    9. Zaehl(2) = 0
    10. Bis(2) = 120
    11. '...
    12. Timer1.Start()
    13. End Sub
    14. Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    15. Label1.Text = ""
    16. For a As Single = 1 To 16
    17. Zaehl(a) += 1
    18. Label1.Text += Zaehl(a).ToString + "\"
    19. If Zaehl(a) = Bis(a) Then
    20. MessageBox.Show("Zeit " + a.ToString + " abgelaufen!", "Zähler", MessageBoxButtons.OK, MessageBoxIcon.Information)
    21. Exit Sub
    22. End If
    23. Next
    24. End Sub
    25. End Class

    VG,
    Lupus

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

    Vielen Dank an Metal Freak und auch Lupus für die Vorschläge. Die kann man natürlich etwas ausbauen. Ich werde etwas experimentieren.
    Die sauberste Lösung wäre, die Minutentimers auszulesen und anzuzeigen. Dies ist anscheinend nicht möglich.

    Eine weitere Idee wäre, mit dem Event eines jeden Minutentimers durch Now-Anweisung die Uhrzeit zu merken. Mit Event des Sekundentimers kann dann alle Uhrzeiten in einer Schleife ausgewerter und angezeigt werden.

    Gruss