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

Windows Forms Discussion :

[c#][VSN2003] timer avec bouton


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2005
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 128
    Par défaut [c#][VSN2003] timer avec bouton
    Voilà, en fait je suis en train de faire un ptit visionneur d'image.
    J'y ai intégré un diaporama permettant de définir une durée en seconde, puis de lancer le diaporama à partir d'un bouton.

    Seulement voilà, mon timer est défini tel quel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    System.Timers.Timer timer = new System.Timers.Timer();
    this.timer.Elapsed += new System.Timers.ElapsedEventHandler(this.buttonPlay_Click);
    Afin de lancer la lecture ainsi que le timer via le bouton Play, je dois définir pour le bouton le click.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.buttonPlay.Click += new System.Timers.ElapsedEventHandler(this.buttonPlay_Click);
    Mon problème est que le boutonPlay n'a pas l'air d'accepter ElapsedEventHandler.

    J'aimerais savoir comment lancer à la fois le timer et l'action à faire, à partir d'un même bouton.

    J'aimerais aussi savoir comment je pourrais utiliser ce même bouton pour 2 actions distinctes (Play et Stop), par alternance.
    Le bouton Play lance une boucle qui fait image suivante à chaque intervalle de timer, et dans cette boucle je pourrais faire Stop si un click sur ce bouton est récupéré.
    Comment récupéré ce click ?

    Merci.

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    487
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 487
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.timer.Elapsed += new System.Timers.ElapsedEventHandler(this.buttonPlay_Click);
    Il faut définir une méthode (du type ElapsedEventHandler) qui fait l'action voulue et la faire appeler par le timer.
    Ce code indique que le timer doit exécuter périodiquement la méthode this.buttonPlay_Click(). Ca n'a pas de sens.

    Pour que le timer se déclenche, il faut utiliser Timer.Enabled.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    private void button1_Click(object sender, EventArgs e) {
       timer.Interval = 1000; //si non défini auparavant
       timer.Enabled = true;
       }
    Et pour un marche/arrêt sur le même bouton
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      timer.Enabled = !timer.Enabled;

  3. #3
    Membre confirmé
    Inscrit en
    Décembre 2005
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 128
    Par défaut
    Ah oui exact...Le bouton Play appelle le timer, qui lui va appeler la méthode lancant la boucle.
    Désolé j'aurais dû creuser un ptit peu plus...

    Merci en tout cas .

  4. #4
    Membre confirmé
    Inscrit en
    Décembre 2005
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 128
    Par défaut
    Finalement non...ce n'est pas tout à fait réglé :\ lol

    Tout marche presque comme il faut, seulement lors de l'appel à la méthode qui fait la boucle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    private void diaporama(object sender, System.Timers.ElapsedEventArgs e)
            {
                while ((position+1) <= nbImages)
                {
                    this.acNext_Execute(sender, e);
                }
            }
    Tant que toutes les images (rangées dans un tableau comportant nbImages images) n'ont pas été parcourues, ça appuie sur le bouton Next qui affiche l'image suivante et incrémente la position dans ce tableau.

    Mais lorsque j'appuie sur le bouton Play qui appelle de cette façon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    this.timer.Interval = 5000;
    this.timer.Enabled = !this.timer.Enabled;
    Ca n'affiche pas une image toutes les 5 secondes, mais plutôt la première image, puis la dernière image 5 secondes après, la boucle n'a pas l'air de prendre en compte le timer.Interval ?

    J'ai essayé avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.timer.Interval = 5000;
    dans la boucle même, mais ça ne change rien.

    Une idée svp ?

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    487
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 487
    Par défaut
    la méthode diaporama est appelée par timer toutes les 5 secondes.
    Elle doit afficher une image à la fois !

  6. #6
    Membre confirmé
    Inscrit en
    Décembre 2005
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 128
    Par défaut
    Ah...ok je vois !
    Je pensais que le timer.Interval serait utilisé dans la méthode appelée par le timer, mais apparement non.

    Tout est ok alors, merci encore .

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

Discussions similaires

  1. [C#]Comment forcer la sélection d'un noeud avec bouton droit
    Par irnbru dans le forum Windows Forms
    Réponses: 3
    Dernier message: 16/11/2005, 19h39
  2. [C#] Dropdownlist avec bouton valider
    Par serge benhamou dans le forum ASP.NET
    Réponses: 3
    Dernier message: 28/10/2005, 10h42
  3. [MFC] Cherche Timer avec thread
    Par romeo9423 dans le forum MFC
    Réponses: 17
    Dernier message: 09/03/2005, 10h33
  4. Réponses: 24
    Dernier message: 11/01/2005, 10h12
  5. Nouvelle form avec bouton dans barre taches
    Par DarkChamallo dans le forum API, COM et SDKs
    Réponses: 3
    Dernier message: 17/05/2004, 20h44

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