0 votes

Compte à rebours Vb.net

J'essaie de créer un compte à rebours dans mon application. Je connais déjà le temps du compte à rebours qui est de 4 minutes. J'ai un Timer qui fait tic-tac toutes les secondes. A partir de là, comment puis-je mettre à jour mon TextBox pour qu'il affiche le temps restant au format HHMMSS ?

EDIT : le problème que j'ai est de calculer le temps restant. Que dois-je utiliser ? L'horodatage ?

3voto

Daniel LeCheminant Points 28101

Avant de commencer le compte à rebours, notez l'heure actuelle en utilisant quelque chose comme

Dim endTime as DateTime = DateTime.Now.Add(TimeSpan.FromMinutes(4))

Ensuite, lorsque vos événements de tic-tac se produisent, vous pouvez déterminer combien de temps il reste en utilisant

Dim timeLeft as TimeSpan = endTime.Subtract(DateTime.Now)

Vous pouvez formater timeLeft comme vous le souhaitez, éventuellement en utilisant .ToString("hh:mm:ss") mentionné par Jared

Vous pouvez lire les documents sur TimeSpan s y DateTime pour plus d'informations sur la façon de les utiliser.

1voto

JaredPar Points 333733

La meilleure façon de garder la trace de l'heure est d'enregistrer le début en utilisant DateTime.Now. Vous pouvez ensuite voir la différence à tout moment en soustrayant la valeur enregistrée.

Dim diff = DateTime.Now - savedTime
Dim remaining = TimeSpan.FromMinutes(4) - diff

Pour obtenir le format que vous souhaitez, il suffit de le passer à la fonction .ToString sous la forme d'une chaîne de caractères.

Dim readable = remaining.ToString("hh:mm:ss")

0voto

sharptooth Points 93379

Ajoutez un gestionnaire d'événement pour la minuterie et faites-lui calculer le temps restant, formater une chaîne de caractères et mettre à jour la zone de texte.

Pour suivre le temps et calculer la différence, vous pouvez utiliser Environment.TickCount - c'est la variante la plus simple. Enregistrez l'horodatage au moment où vous lancez le compte à rebours et récupérez-le chaque fois que le gestionnaire d'événement est appelé.

0voto

dbasnett Points 4114
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Timer1.Interval = 500
    Timer1.Start()
End Sub
Dim stpw As New Stopwatch
Dim CountDownFrom As Integer = 4 * 60 'as seconds
Dim CountDown As New TimeSpan
Private Sub StartCountDown()
    CountDown = TimeSpan.FromSeconds(CountDownFrom)
    stpw.Stop() : stpw.Reset() : stpw.Start()
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    If Not stpw.IsRunning Then Exit Sub
    Dim TimeRemaining As TimeSpan = CountDown - stpw.Elapsed
    Label1.Text = TimeRemaining.Hours.ToString.PadLeft(2, "0"c) & ":" & _
                    TimeRemaining.Minutes.ToString.PadLeft(2, "0"c) & ":" & _
                    TimeRemaining.Seconds.ToString.PadLeft(2, "0"c)
    If TimeRemaining.TotalMilliseconds <= 0 Then stpw.Stop()
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    StartCountDown()
End Sub

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