Partage
  • Partager sur Facebook
  • Partager sur Twitter

[C#] Créer un Evénement

Sujet résolu
    22 mars 2012 à 17:59:10

    Bonjour,

    Pour apprendre le C#, j'ai décider de créer un lecteur audio. J'utilise pour cela Microsoft.DirectX.AudioVideoPlayback.

    Afin de représenter une musique dans le temps j'utilise un trackBar. Pour faire suivre le trackBar avec la musique j'ai besoin d'un évènement qui me retourne la position de la musique si elle change.

    Comment procéder ? je lis le tuto C# sur le site mais je ne vois pas comment faire.

    Voici ma class Lecteur :

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Runtime.InteropServices;
    using Microsoft.DirectX.AudioVideoPlayback;
    
    namespace lecteur
    {
        class Lecteur
        {
            private Audio lecteur = null;
    
            public Double Position
            {
                get { return lecteur.CurrentPosition; }
                set { lecteur.CurrentPosition = Position; }
            }
    
            public Lecteur(String fichier)
            {
                Console.WriteLine("Play : " + fichier);
                lecteur = new Audio(fichier);
            }
    
            public double Duration()
            {
                return lecteur.Duration;
            }
    
            public void Play()
            {
                lecteur.Play();
            }
    
            public void Stop()
            {
                lecteur.Stop();
            }
        }
    }
    


    j'aimerai pouvoir faire quelque chose comme :

    private void lecteur_ChangePosition(object sender, ChangePositionEventArgs e)
    {
        Console.WriteLine("position : " + e.Position);
    }
    
    • Partager sur Facebook
    • Partager sur Twitter
      22 mars 2012 à 20:14:04

      Un objet TrackBar a comme evenement ValueChanged.

      Tu peux donc faire :

      public Lecteur(String fichier)
      {
          Console.WriteLine("Play : " + fichier);
          lecteur = new Audio(fichier);
          monTrackBar.ValueChanged += lecteur_ChangePosition;
      }
      
      private void lecteur_ChangePosition(object sender, EventArgs e)
      {
          Console.WriteLine("position : " + (sender as TrackBar).Value);
      }
      
      • Partager sur Facebook
      • Partager sur Twitter
      Altarapp.com - Applications, Code Snippets, API Wrappers et etc, le tout en C# le plus clair du temps!
        22 mars 2012 à 20:32:10

        Merci pour votre réponse, mais je cherche à avoir un évènement DurationChanged sur les secondes.

        Si je pouvais faire :

        public Lecteur(String fichier)
        {
            Console.WriteLine("Play : " + fichier);
            lecteur = new Audio(fichier);
            lecteur.DurationChanged += lecteur_ChangePosition;
        }
        


        Cela me permettrai de faire avancer la trackBar en même temps que la musique.
        • Partager sur Facebook
        • Partager sur Twitter
          22 mars 2012 à 21:18:38

          Le mieux est sans doute de démarrer un timer en même temps que la lecture, qui déclencherait un événement régulièrement (toutes les secondes par exemple). A chaque "tick" du timer il suffirait alors de calculer le rapport entre la CurrentPosition et la Duration du lecteur et de modifier la valeur de la Trackbar en conséquence. :)
          • Partager sur Facebook
          • Partager sur Twitter

          [C#] Créer un Evénement

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown