j'ai un projet ou plutôt un programme que j'ai créé en Vb.net, mais mon problème est que je voudrais savoir comment faire un compte a rebours par exemple un temps de 5 secondes jusqu'a 00 seconde.
merci de me répondre.
j'ai un projet ou plutôt un programme que j'ai créé en Vb.net, mais mon problème est que je voudrais savoir comment faire un compte a rebours par exemple un temps de 5 secondes jusqu'a 00 seconde.
merci de me répondre.
Il s'agit donc de décrémenter un compteur de 1, à raison d'un décrément par seconde.
Pour les timers, il en existe 3 .net, le plus commun est System.Timers.Timer
Si tu veux afficher la valeur dans une interface graphique, assure toi, dans timer_Elapsed, de faire le BeginInvoke adéquat sur ta form, autrement ton thread UI te lèvera à 90% de chance une exception.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 private System.Timers.Timer timer; private int compteur = 5; public void Init() { timer = new System.Timers.Timer(); timer.Interval = 1000;//une seconde timer.Elapsed += timer_Elapsed; timer.Start(); } private void timer_Elapsed(object sender, EventArgs ea) { compteur--; if(compteur == 0) { Console.WriteLine("BOUM"); timer.Stop(); //on a atteint 0, on stoppe, si le timer n'est plus utile, on appelle Dispose() pour nettoyer proprement } else Console.WriteLine(compteur); }
Code à la mimine dans la boite de saisie, pas compilé donc !
merci pour ton aide.
mais c en C# vous pouvez encore m’expliqué en vb.
merci
Bonjour,
En multipliant pas (-1) ça inverse la polarité
Sinon, une variable globale décrémentée, comme suit, exemple de principe :
Cordialement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 dim m1 as long sub lanceTimer() m1 = 10 timer1.interval = x timer1.enabled=true end sub sub timer1(... m1=l1-1 labelbox.text = m1 if m1 = 0 then timer1.enabled = false my.application.doEvents end sub 'timer1 sub stopUrgenceTimer_bouton_ou_procedure() timer1.enabled = false end sub
Joe.
tiens ca me manquait de voir une invention de ta part ... ou pas ...
doevents traite les évènements sur la pile
la sortie d'un évènement fait que ca traite les évènements suivants sur la pile
tu vois une différence ??
de plus modifier le texte d'un label prend moins d'une milliseconde
tu clic plusieurs fois dans ce laps de temps ?
Bonsoir,
Oui je vois une différence, parfois ça va tellement vite qu'il est impossible d'afficher ce qui se passe, dans ce cas il faut rendre la main par doEvents aux objets chargés d'assurer l'affichage (du cécompte en l'espèce), ça peut certes ralentir le timer, mais apèrs c'est une question de priorité, si le timer tourne trop vite mais qu'on veut absolument afficher le décompte, faut trancher !
Cordialement.
Partager