Timer/chronomètre c# visual form

Fermé
scoutantho Messages postés 50 Date d'inscription jeudi 10 avril 2014 Statut Membre Dernière intervention 25 juillet 2016 - Modifié par baladur13 le 23/07/2016 à 22:55
scoutantho Messages postés 50 Date d'inscription jeudi 10 avril 2014 Statut Membre Dernière intervention 25 juillet 2016 - 25 juil. 2016 à 00:07
Bonjour,

voulant créer un chronomètre pour le plaisir, et pour une utilité particulière, j'ai regardé deux vidéos : https://www.youtube.com/watch?v=bglYDCdoBCg et https://www.youtube.com/watch?v=PaOZhilQNQM

cependant, la première se base sur l'heure actuelle donc aucun problème pour actualisé le temps et la seconde son chrono va beaucoup trop vite, j'ai donc chercher à taton le bon "temps" pour passer la prochaine seconde, ma conclusion à été de 16, mon code ci dessous :
 public Form1()
        {
            InitializeComponent();
        }
        int min, sec,ms = 0;
        [/download/telecharger-34089700-timer Timer] timer1 = new Timer();

  private void timer1_Tick(object sender, EventArgs e)
        {

            //timer
            ms++;
         <bold>   if (ms > 16) { sec++; ms = 0; }</bold>
            else ms++;
            if (sec > 60) { min++; sec = 0; }

            //affichage 
            string temps = "";

            if (min < 10) { temps += "0" + min; } else { temps += min; }
            temps += ":";
            if (sec < 10) { temps += "0" + sec; } else { temps += sec; }
            temps += ":"+ms.ToString();
            
            label1.Text = temps;

         
    }

        private void button1_Click(object sender, EventArgs e)
        {
            timer1.Interval = 100;
            timer1.Tick += new EventHandler(this.timer1_Tick);
            timer1.Start();

            
        }

voilà, j'aurais donc aimé savoir si quelqu'un sais quelque chose sur ce problème et aurais une solution
Et je voudrais pouvoir démarrer un timer, donc sur une valeur entrée par l'utilisateur, mais celle ci doit-elle se trouver en millisecondes ?

merci d'avance, bonne soirée/ journée


EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.
A voir également:

3 réponses

Whismeril Messages postés 19026 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 20 avril 2024 931
23 juil. 2016 à 21:56
Bonsoir,

le tuto vidéo n'est pas adapté à la programmation, 5 minutes 30 pour 5 lignes de codes que tu ne peux même pas copier coller pour essayer....

Cela étant dit, pour mesurer le temps iil y a tout d'abord la classe DateTime qui comme son nom l'indique offre des outils sur la date et l'heure, ensuite il y a le TimeSpan qui est un intervalle, par exemple la soustraction de 2 DateTime est un TimeSpan, et enfin il y a la classe Stopwatch qui est un chronomètre.
1
scoutantho Messages postés 50 Date d'inscription jeudi 10 avril 2014 Statut Membre Dernière intervention 25 juillet 2016
23 juil. 2016 à 22:03
j'ai regardé les 3 classes, mais je n'ai pas réellement réussi à appliquer ce que je voulais faire, tout d'abord je voudrais seulement travailler sur des minutes et des secondes à partir de 00:00 ou d'une valeur prédéfinie par l'utilisateur et je n'arrive pas à le faire avec datetime quand au stopwatch, je n'arrive pas à afficher un chrono et encore moins à faire un "beep" par exemple 3 secondes apres le début du code car la stopwatch débute des que le .start est lancé et comptes aussi le temps d'execution du code
0
Whismeril Messages postés 19026 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 20 avril 2024 931
23 juil. 2016 à 22:39
DateTime et TimeSpan sont des classes de bases du c#, je pense qu'il serait judicieux que tu apprennes donc les bases de ce langage d'abord...

https://tahe.developpez.com/dotnet/csharp/
1
scoutantho Messages postés 50 Date d'inscription jeudi 10 avril 2014 Statut Membre Dernière intervention 25 juillet 2016
23 juil. 2016 à 23:49
très bien dans ce cas mon école ne m'apprend pas les bases du c#, cependant j'ai quand meme chercher et je n'ai pas réussi à utiliser ses 2 classes comme je le voulais. je vais continuer de chercher dans tous les cas, mais si j'aurais pu avoir une aide sur ma solution, cela aurais été un plus
0
Whismeril Messages postés 19026 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 20 avril 2024 931
24 juil. 2016 à 09:54
Bonjour,

Un principe de ce forum est d'essayer de faire progresser le demandeur, donner une solution toute faite, surtout quand elle simple contrevient à ce principe.

En premier lieu je t'ai dit de t'intéresser aux classe DateTime et TimeSpan et au fait que la soustraction de 2 DateTime donne un TimeSpan

DateTime debut;//portée sur la classe de ton chronomètre

//dans la méhode de démarrage
debut = DateTime.Now;
monTimer.Start();

//dans la méthode abonnées à l'événement Tick du timer
TimeSpan duree = DateTime.Now-debut;


Le TimeSpan dispose de propriétés pour récupérer les différentes parties de temps dont tu as besoin.
La méthode ToString permet de retourner un string du type "hh:mm:ss", tu peux modifier le format comme expliqué ici
https://stackoverflow.com/questions/12673194/convert-timespan-from-format-hhmmss-to-hhmm
Note que la syntaxe n'est pas la même pour les DateTime
https://docs.microsoft.com/fr-fr/dotnet/standard/base-types/custom-date-and-time-format-strings?redirectedfrom=MSDN
1
scoutantho Messages postés 50 Date d'inscription jeudi 10 avril 2014 Statut Membre Dernière intervention 25 juillet 2016
25 juil. 2016 à 00:07
ok, très bien, je vais creuser ça demain, merci :)

je donnerais des nouvelles juste apres avoir creusé
0