Timer1. using System;
2. using System.Windows.Forms;
3.
4. namespace Chap5 {
5. public partial class Form1 : Form {
6. public Form1() {
7. InitializeComponent();
8. }
9.
10. // variable d'instance
11. private DateTime début = DateTime.Now;
12. ...
13. private void buttonArretMarche_Click(object sender, EventArgs e) {
14. // arrêt ou marche ?
15. if (buttonArretMarche.Text == "Marche") {
16. // on note l'heure de début
17. début = DateTime.Now;
18. // on l'affiche
19. labelChrono.Text = "00:00:00";
20. // on lance le timer
21. timer1.Enabled = true;
22. // on change le libellé du bouton
23. buttonArretMarche.Text = "Arrêt";
24. // fin
25. return;
26. }//
27. if (buttonArretMarche.Text == "Arrêt") {
28. // arrêt du timer
Interfaces graphiques 200
1
2
29. timer1.Enabled = false;
30. // on change le libellé du bouton
31. buttonArretMarche.Text = "Marche";
32. // fin
33. return;
34. }
35. }
36.
37. }
38. }
• ligne 13 : la procédure qui traite le clic sur le bouton Arrêt/Marche.
• ligne 15 : le libellé du bouton Arrêt/Marche est soit "Arrêt" soit "Marche". On est donc obligé de faire un test sur ce
libellé pour savoir quoi faire.
• ligne 17 : dans le cas de "Marche", on note l'heure de début dans une variable début qui est une variable globale (ligne 11)
de l'objet formulaire
• ligne 19 : initialise le contenu du label LabelChrono
• ligne 21 : le timer est lancé (Enabled=true)
• ligne 23 : libellé du bouton passe à "Arrêt".
• ligne 27 : dans le cas de "Arrêt"
• ligne 29 : on arrête le timer (Enabled=false)
• ligne 31 : on passe le libellé du bouton à "Marche".
Il nous reste à traiter l'événement Tick sur l'objet timer1, événement qui se produit toutes les secondes :
1. private void timer1_Tick(object sender, EventArgs e) {
2. // une seconde s'est écoulée
3. DateTime maintenant = DateTime.Now;
4. TimeSpan durée = maintenant - début;
5. // on met à jour le chronomètre
6. labelChrono.Text = durée.Hours.ToString("d2") + ":" + durée.Minutes.ToString("d2") + ":" +
durée.Seconds.ToString("d2");
7. }
• ligne 3 : on note l'heure du moment
• ligne 4 : on calcule le temps écoulé depuis l'heure de lancement du chronomètre. On obtient un objet de type TimeSpan qui
représente une durée dans le temps.
• ligne 6 : celle-ci doit être affichée dans le chronomètre sous la forme hh
ss. Pour cela nous utilisons les propriétés
Hours, Minutes, Seconds de l'objet TimeSPan qui représentent respectivement les heures, minutes, secondes de la durée que
nous affichons au format ToString("d2") pour avoir un affichage sur 2 chiffres.