Timer [Résolu]

Signaler
Messages postés
224
Date d'inscription
mercredi 28 septembre 2005
Statut
Membre
Dernière intervention
24 juillet 2013
-
cs_Byrong
Messages postés
224
Date d'inscription
mercredi 28 septembre 2005
Statut
Membre
Dernière intervention
24 juillet 2013
-
Bonjour

voila j'aimerai un peu d'aide car j'ai un soucis avec un timer.

En fait j ai deux label sur ma form

un qui va affiche le compte a rebour et l'autre va afficher une information prise dans un tableau.

Mon probleme est que j'aimerai mettre une boucle qui permettrai d'arreter le timer une fois le tableau fini.

Cependant je ne sais pas ou mettre cette boucle...Mon timer utilise un datetime

        private void timer1_Tick(object sender, EventArgs e)
        {
            
            dt = dt.AddSeconds(-1);
            labTemps.Text = dt.ToLongTimeString().ToString();
        }


merci pour votre aide

6 réponses

Messages postés
834
Date d'inscription
samedi 15 novembre 2008
Statut
Membre
Dernière intervention
14 janvier 2017
27
Bonsoir,

OK,
je te propose de tout faire dans l'evenement Tick:


Timer _timer = new Timer();
DateTime _remainingTime = new DateTime(0);
DateTime _timeLoop = new DateTime(0);
int _loopCount = 1;
public Form1()
{
InitializeComponent();
_timeLoop = _timeLoop.AddSeconds(10); // chaque boucle de 10 secondes
_timer.Interval = 1000;
_timer.Tick += new EventHandler(timer_Tick);
}
//Boutton de lancement
private void button3_Click(object sender, EventArgs e)
{
_remainingTime = _timeLoop;
textBox2.Text = string.Format("Boucle N°{0}", _loopCount);
textBox1.Text = _remainingTime.ToString("HH:mm:ss");
_timer.Start();
}
//Procedure du timer
void timer_Tick(object sender, EventArgs e)
{
if (_remainingTime == new DateTime(0))
{  	// une boucle vient de finir, 
if (_loopCount == 3)
{
textBox2.Text = "Perdu";
_timer.Stop();
}
else
{
// on réinitialize pour la prochaine
// attention si tu as un traitement un peu long, arrete et redemarre le timer
_timer.Stop();
//ici un traitment long, genre message box ...
_timer.Start();
_loopCount++;
textBox2.Text = string.Format("Boucle N°{0}", _loopCount);
_remainingTime = _timeLoop;
}
}
else
_remainingTime = _remainingTime.AddSeconds(-1);
textBox1.Text = _remainingTime.ToString("HH:mm:ss");
}



C# is amazing, enjoy it!
Messages postés
834
Date d'inscription
samedi 15 novembre 2008
Statut
Membre
Dernière intervention
14 janvier 2017
27
Bonsoir

je ne comprends pas très bien ce que tu veux faire de cette boucle.

une fois ton tableau terminé, il te suffit de faire timer1.Stop(); pour arreter le timer.

bob
C# is amazing, enjoy it!
Messages postés
224
Date d'inscription
mercredi 28 septembre 2005
Statut
Membre
Dernière intervention
24 juillet 2013

je me suis aml exprimé.

En fait j'aimerais un compte a rebour

Donc mon timer est comme le code ecrit ci dessus, à savoir:

        private void timer1_Tick(object sender, EventArgs e)
        {
            
            dt = dt.AddSeconds(-1);
            labTemps.Text = dt.ToLongTimeString().ToString();
        }


Cependant, ce compte a rebour doit se repeter une fois le premier compte a rebour arrivé à 0.

a chaque fois que le compte a rebour commence, il affiche le texte contenu dans un tableau dans un label et change a chaque fois que la boucle est incrémenté. Cette boucle ne s'incrémente a la fin de chaque compte a rebour.
Messages postés
224
Date d'inscription
mercredi 28 septembre 2005
Statut
Membre
Dernière intervention
24 juillet 2013

merci j essay cela de suite
Messages postés
224
Date d'inscription
mercredi 28 septembre 2005
Statut
Membre
Dernière intervention
24 juillet 2013

en fait je fait un programme pour les tour de blind du poker.

Donc si je choisi 5minute.

Il doit décompter 5minuteen affichant le compte a rebour, et changer à chaque fois le deuxieme label en fonction.

Donc si j'ai bien compri, dans le timeloop, je dois mettre les 5minutes.

et dans l'interval. je met quoi?
Messages postés
224
Date d'inscription
mercredi 28 septembre 2005
Statut
Membre
Dernière intervention
24 juillet 2013

merci tout fonctionne; énorme merci