IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Mettre un chrono dans une form [Débutant]


Sujet :

C#

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 19
    Points : 14
    Points
    14
    Par défaut Mettre un chrono dans une form
    Bonjour,

    j'ai fait un sudoku a l'aide de Microsoft Visual Studio Express 2012 , il fonctionne correctement du coup, comme ajout je voulais mettre un chronomètre, je suis allé voir sur le net comment faire, et la pas moyen malgré tous les tous et la doc Windows de mettre un fichus chronomètre!

    J'ai surtout des problème avec le tick et aussi je ne sait pas où le mettre ni trop comment l'utilisé (dans la form il y a un soucis et dans le design il n'est plus comprit dans la form), et c'est System.Windows.Form.Timer ou System.Timers.Timer qu'on utilise?

    Voila je suis un peu perdu, j'ai suivit pas mal de tuto a chaque fois j'ai subit un echec, si quelqu'un pouvais m'expliquer comment faire un chrono dans un label ou même me donner des lien vers des tuto explicite?

    Voila merci d'avance

    (mon sudoku a une form, une class et s'tout)

  2. #2
    Membre averti
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Novembre 2014
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2014
    Messages : 196
    Points : 331
    Points
    331
    Par défaut
    Dans ton cas il vaut mieux que tu utilise System.Windows.Timer : http://stackoverflow.com/questions/2...label-on-timer

  3. #3
    Membre chevronné
    Avatar de PixelJuice
    Homme Profil pro
    Ingénieur .NET & Game Designer
    Inscrit en
    Janvier 2014
    Messages
    639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur .NET & Game Designer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2014
    Messages : 639
    Points : 2 148
    Points
    2 148
    Par défaut
    Bonjour,

    tu voudrais afficher le temps tout le temps ou seulement quand le joueur a résolu le Sudoku ?

    Dans les 2 cas je te conseillerai la classe Stopwatch (System.Diagnostics). Elle est plus précise et plus fiable que les classes Timer.

    Pour son utilisation :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
                Stopwatch watch = new Stopwatch();
                // On la démarre
                watch.Start();
                // On l'arrête
                watch.Stop();
                // On récupère le temps sous forme d'un TimeSpan
                TimeSpan time = watch.Elapsed;

    Tu as ton chronomètre , reste plus qu'a l'afficher ou le rafraîchir , si tu veux montrer le temps du chronomètre en temps réel.

    Tu peux utilisé un Timer (System.Windows.Forms) pour rafraîchir le label.

    Tu vas dans le concepteur de vue , tu le glisse sur ta Form , puis tu le paramètre comme tu veux , tu génères une méthode qui sera appelé toutes les x (selon ce que tu as mis dans la propriété Interval) et le tour est joué.


    PS : La classe Timer peut être très déroutante car il y en a 3 de bases , de 3 namespaces différents (Timer / Forms / Thread) et qui ne fonctionne pas vraiment pareil.

  4. #4
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 19
    Points : 14
    Points
    14
    Par défaut
    Merci à tous les deux, j'ai utilisé stopwatch, et un timer pour mettre à jour le chronomettre.

    J'ai glissé un timer sur le form, je l'ai paramétré, j'ai créé sa fonction à l'aide du tuto, et il donne au label la valeur du stopwatch.

    Voila le code qui concerne mon chrono:
    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
     
            Stopwatch watch = new Stopwatch();
     
            public Form1()
            {
                InitializeComponent();
                panel1.Hide();
                button1.Hide();
                button2.Hide();
                checkBox1.Hide();
                label1.Text = "Choisir un niveau";
                timer1.Tick += timer1_Tick;
            }
     
            void timer1_Tick(object sender, EventArgs e)
            {
                TimeSpan time = watch.Elapsed;
                label2.Text = time.ToString();
            }
    Merci de m'avoir réexpliquer enfaîte c'est pas si compliqué , c'est juste que je ne comprenais pas.

    EDIT: Euh mais j'ai un autre problème, du coup mon chrono affiche tous ce qu'il y a après les secondes, vous auriez une idée de comment je peut ne pas l'afficher svp?

  5. #5
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Barokar Voir le message
    EDIT: Euh mais j'ai un autre problème, du coup mon chrono affiche tous ce qu'il y a après les secondes, vous auriez une idée de comment je peut ne pas l'afficher svp?
    Bonjour,
    Par défaut, la méthode "ToString" de l'objet de time "TimeSpan" affiche jusqu'aux millisecondes. Si tu veux contrôler mieux ce que tu veux afficher, il y a 2 possibilités :

    1ère possibilité : utiliser la surcharge de ToString qui prend la chaine de formatage en paramètres. Dans ce cas tu peux faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    label2.Text = time.ToString("hh:mm:ss");
    pour afficher heures minutes et secondes. Par exemple "hh" au lieu de "h" va te permettre de bien préciser que tu veux voir apparaître les 2 chiffres de l'heure même quand l'heure vaut moins que 10.

    2ème possibilité :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    label2.Text = string.Format("{0:00}:{1:00}:{2:00}",time.Hours,time.Minutes,time.Seconds);
    Bon alors tout ça paraît bien compliqué, mais cela permet de contrôler le mieux possible la manière dont on veut personnaliser son affichage. Dans les 2 cas, j'ai utilisé des spécificités de formatage. Je n'ai pas trop le temps d'expliquer mais dans tous les cas, regarde bien la documentation MSDN et ses exemples pour les usages.
    Dernière modification par Invité ; 25/11/2014 à 15h06. Motif: Correction de fautes d'orthographe

  6. #6
    Membre éprouvé
    Homme Profil pro
    Architecte technique
    Inscrit en
    Septembre 2005
    Messages
    462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 462
    Points : 1 056
    Points
    1 056
    Par défaut
    Salut,

    MSDN : Chaînes de format TimeSpan personnalisées
    Une exemple si tu veut mettre les lettres dans ton format : Ici

    Edit : Grillé par Philippe

  7. #7
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par katkiller Voir le message
    Edit : Grillé par Philippe
    Ah, désolé, je n'ai pas fait exprès!
    (Décidément, ça arrive souvent! )
    Allez, un petit pouce vert pour me faire pardonner!

  8. #8
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 19
    Points : 14
    Points
    14
    Par défaut
    Ah oui merci je n'y avais pas pensé a formater mon timespan avec le .ToString()

    Voila ce que j'ai utilisé du coup;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    label2.Text = time.ToString("hh:mm:ss");

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [SdlDotNet] Mettre le rendu dans une Windows Forms
    Par Invité dans le forum Développement 2D, 3D et Jeux
    Réponses: 1
    Dernier message: 19/12/2010, 17h38
  2. mettre un fichier divx avi dans une form
    Par philippeu64 dans le forum Débuter
    Réponses: 3
    Dernier message: 23/08/2010, 13h52
  3. [VB6] [Excel] Feuille dans une form, sans excel installé
    Par ro2v dans le forum Installation, Déploiement et Sécurité
    Réponses: 3
    Dernier message: 05/05/2010, 13h45
  4. Mettre des donnés dans une sous-form.
    Par MuadDib_II dans le forum IHM
    Réponses: 4
    Dernier message: 20/08/2008, 15h42
  5. Tabulation dans une form avec entrée
    Par Cl@rk dans le forum Windows Forms
    Réponses: 4
    Dernier message: 23/05/2008, 13h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo