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 :

Intercepter un événement dans une classe


Sujet :

C#

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2008
    Messages : 191
    Points : 200
    Points
    200
    Par défaut Intercepter un événement dans une classe
    Bonjour,

    je suis en train de me bâtir une classe "Chronomètre" qui se veut être une version personnalisée du Timer fournie. En fait, il s'agit d'une version améliorée qui répond mieux à mes besoins; c'est-à-dire que j'utilise la classe Timer dans ma classe Chronomètre. Ainsi, lorsqu'une instance de Chronomètre est crée, cet objet contient une instance de Timer.

    Mon problème est donc le suivant : j'aimerais pouvoir intercepter l'événement "Tick" du timer au sein de ma classe chronomètre afin de pouvoir utiliser l'événement "Tick" de mon objet chronomètre 1, 2 ou 3 par exemple plutôt que celui de l'instance du Timer. Je dois avouer que je suis un peu perdu de ce côté et je ne sais pas trop comment attaquer le problème (ou encore si c'est réalisable en un temps raisonnable).

    Si jamais ce n'est pas clair, n'hésitez pas à me le faire savoir.
    Merci d'avance,
    al_bert

  2. #2
    Expert éminent
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Points : 7 660
    Points
    7 660
    Par défaut
    Si tu as un objet Timer dans ton objet Chronometre, tu as juste à t'abonner à l'événement Tick du timer et faire ta gestion derrière ensuite, à savoir déclencher un événement de ton Chronometre. Sinon c'est qu'effectivement ce n'est pas très clair

  3. #3
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2007
    Messages
    677
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2007
    Messages : 677
    Points : 2 137
    Points
    2 137
    Par défaut
    Je peux essayer de te faire un p'tit code à l'arrache pour te mettre sur une piste, même si je n'ai pas très bien déterminé tes attentes :
    ( sachant aussi qu'il existe au moins 3 "Timer" de base dans le framework, System.Timers.Timer(), System.Threading.Timer(), System.Windows.Forms.Timer(), dans le tas il y en a peut-être un qui fait ce que tu attends ).

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
        public class Chrono
        {
            public event EventHandler Tick;
     
            private System.Windows.Forms.Timer _timer;
     
            public Chrono()
            {
                _timer = new System.Windows.Forms.Timer();
     
                _timer.Tick += new EventHandler(Timer_Tick);
     
                _timer.Start();
            }
     
            private void Timer_Tick(object sender, EventArgs e)
            { OnTick(new EventArgs()); }
     
            protected virtual void OnTick(EventArgs e)
            { Tick(this, e); }
        }
     
        public class MaClasse
        {
            private Chrono _chrono;
     
            public MaClasse()
            {
                _chrono = new Chrono();
     
                _chrono.Tick += new EventHandler(Chrono_Tick);
            }
     
            private void Chrono_Tick(object sender, EventArgs e)
            { /* ... */ }
        }

    [Edit] : je tiens quand même à préciser que cet exemple sert uniquement si tu as des traitements spéciaux à faire dans ta classe Chrono, car mon bout de code n'aura aucun intérêt dans le cas contraire (autant faire un accesseur sur l'objet Timer et s'abonner directement à son événement plutôt que de relayer l'événement comme je l'ai fait).

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2008
    Messages : 191
    Points : 200
    Points
    200
    Par défaut
    Bonjour à vous deux,

    tout d'abord merci pour vos réponses. En effet, le fait de m'abonner à l'événement semble pouvoir répondre parfaitement à mes besoins. J'avais d'ailleurs trouvé cette information sur la bibliothèque msdn (http://msdn.microsoft.com/fr-fr/libr...68(VS.80).aspx), mais étant assez débutant dans le domaine des event, je ne voyais pas trop comment l'implémenter.

    Je vais donc me baser sur l'exemple de I_Pnose et tenter de rebâtir ma classe. Je vous au courant du résultat!

    Merci encore,
    al_bert

Discussions similaires

  1. [prototype] gérer les événements dans une classe
    Par nawac dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 10/05/2010, 18h44
  2. Ajout d'un évènement dans une classe
    Par marcaille dans le forum C#
    Réponses: 6
    Dernier message: 23/10/2009, 19h38
  3. Programmer des évènements asynchrones dans une classe ?
    Par Pierre8r dans le forum Langages de programmation
    Réponses: 4
    Dernier message: 31/10/2008, 13h17
  4. Définir des événements dans une classe
    Par Masmeta dans le forum Windows Forms
    Réponses: 5
    Dernier message: 29/04/2008, 17h41
  5. Fonction callback dans une classe
    Par julian_ross dans le forum MFC
    Réponses: 8
    Dernier message: 02/03/2004, 11h42

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