Comment créer un décompte de 30s puis le relancer ?

Résolu
cs_Nestor Messages postés 182 Date d'inscription mardi 8 janvier 2002 Statut Membre Dernière intervention 2 octobre 2012 - 31 août 2012 à 14:47
cs_Nestor Messages postés 182 Date d'inscription mardi 8 janvier 2002 Statut Membre Dernière intervention 2 octobre 2012 - 4 sept. 2012 à 00:15
Bonjour,

je voudrais créer avec un Timer (validation de départ sur un simple bouton (Button2)) une fonction de décompte de 30 secondes. Cette fonction doit être capable de se relancer toute seule que quand le Timer est arrivé à zéro.

J'ai essayé dans Timer1_Tick avec ca: (timer réglé à 1000 et sur True dés le départ.)

Dim timercount As Integer = 30
timercount = timercount - 1

Button1.Text = "Actualiser mes Statistiques (" & timercount & ")"

If timercount = 0 Then
'ici une action que mon programme va créer que si ZERO est affiché sur ce bouton.
End If

Quand je lance ce bout de code, il est marqué 29 mais ne continue pas.

Et c'est la que vous intervenez pour m'aider, car je ne vois pas d’où viens le pb.

Merci d'avance.

3 réponses

Utilisateur anonyme
31 août 2012 à 17:23
Bonjour,

Le code qui suit vient directement de l'aide de VB. Eh oui, il y a des exemples dans l'aide. Il fait afficher un(e) messagebox 5 secondes après avoir cliqué Ok. Il utilise un contrôle Timer. Il repart automatiquement à zéro dès que le client a répondu oui. Si la ligne:

myTimer.Stop()


était enlevée, il repartirait automatiquement à toutes les cinq secondes


Public Class Class1
    Private Shared WithEvents myTimer As New System.Windows.Forms.Timer()
    Private Shared alarmCounter As Integer = 1
    Private Shared exitFlag As Boolean = False    

    ' This is the method to run when the timer is raised.
    Private Shared Sub TimerEventProcessor(myObject As Object, _
                                           ByVal myEventArgs As EventArgs) _
                                       Handles myTimer.Tick
        myTimer.Stop()

        ' Displays a message box asking whether to continue running the timer.
        If MessageBox.Show("Continue running?", "Count is: " & alarmCounter, _
                            MessageBoxButtons.YesNo) = DialogResult.Yes Then
            ' Restarts the timer and increments the counter.
            alarmCounter += 1
            myTimer.Enabled = True
        Else
            ' Stops the timer.
            exitFlag = True
        End If
    End Sub

    Public Shared Sub Main()
        ' Adds the event and the event handler for the method that will
        ' process the timer event to the timer.

        ' Sets the timer interval to 5 seconds.
        myTimer.Interval = 5000
        myTimer.Start()

        ' Runs the timer, and raises the event.
        While exitFlag = False
            ' Processes all the events in the queue.
            Application.DoEvents()
        End While

    End Sub    

End Class


Dans ton cas, tu mets

 myTimer.Interval = 30000


et à tous les multiples de 1000 millisecondes tu fais afficher le nombre de secondes qui reste.

Ou, mieux que cela, dès que ton timer atteint 0, tu lui fais faire la mise à jour automatiquement. Dans ce cas, même pas besoin d'afficher de décompte.
3
jordane45 Messages postés 38160 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 5 mai 2024 344
31 août 2012 à 15:36
Bonour,

déjà, pense à utiliser les balises de codes.
ensuite..

Dans ton code tu fixe ton compteur à 30... A chaque fois qu'il y entre.. donc toutes les secondes en fait...
Ta variable=30 doit etre initialisée en dehors du TICK


Cordialement,
Jordane,
______________________________________________________
Règles du forum à lire avant de poster une question : ICI
0
cs_Nestor Messages postés 182 Date d'inscription mardi 8 janvier 2002 Statut Membre Dernière intervention 2 octobre 2012
4 sept. 2012 à 00:15
Merci beaucoup de ton aide.
ca marche nikél !!!
Merci.
0
Rejoignez-nous