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 :

[event] Chainage d'evenement basés sur le modèle EventHandler


Sujet :

C#

  1. #1
    Membre éclairé Avatar de ZaaN
    Inscrit en
    Novembre 2005
    Messages
    819
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 819
    Points : 661
    Points
    661
    Par défaut [event] Chainage d'evenement basés sur le modèle EventHandler
    Bonjour,

    une question :

    Est-il possible de chainer directement les evenements ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    m_InnerObject.EventXXX += this.EventXXX;
    Sans passer par une fonction de type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    protected virtual void OnRaiseCustomEvent(CustomEventArgs e)
    {
                if (handler != null)
                {                                
                    handler(this, e);
                }
    }
    Merci.
    Pour les details, cherche tout seul !

  2. #2
    Expert éminent sénior
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Par défaut
    J'ai pas compris la question, tu pourrais être plus clair stp.
    Introduction à Silverlight 4 (new) ; Localisation d'une application Silverlight (new) ;
    Mon espace perso[/B]

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. Albert Einstein[/SIZE]

  3. #3
    Membre éclairé Avatar de ZaaN
    Inscrit en
    Novembre 2005
    Messages
    819
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 819
    Points : 661
    Points
    661
    Par défaut
    Soit deux classes (CExternal & CInternal) qui propose une meme définition (DlgXXX) d'un public event !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    public event DlgXXX XXXEventINT;
    public event DlgXXX XXXEventEXT;
    La classe CExternal est composé avec un object de la classe CInternal.
    La classe Cinternal est la génératrice des evenements.
    Les levées d'evenement doivent etre reportés à l'exterieur de CExternal.

    Dans le code de CExternal, puis-je lier l'evenement de CExternal directement sur celui de CInternal de cette manière :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    m_Internal.XXXEventINT += this.XXXEventEXT
    ;

    Au lieu de passer a traver une fonction du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    m_Internal.XXXEventINT += this.OnEventXXX;
    protected virtual void OnEventXXX(CustomEventArgs e)
    {
                if (XXXEventEXT != null)
                {                                
                    XXXEventEXT(this, e);
                }
    }
    Pour les details, cherche tout seul !

  4. #4
    Membre éclairé
    Homme Profil pro
    Développeur / architecte
    Inscrit en
    Juillet 2009
    Messages
    473
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur / architecte

    Informations forums :
    Inscription : Juillet 2009
    Messages : 473
    Points : 674
    Points
    674
    Par défaut
    En utilisant add & remove ?
    Derrière tu fais le routage qu'il faut. Si j'ai bien compris, tu veux juste que ça soit transparent et que ça ait l'air de venir de CInternal?

  5. #5
    Membre émérite Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Points : 2 925
    Points
    2 925
    Par défaut
    Challenge intéressant

    Je pensais le faire de façon générique ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    class Machin
    {
    	Machin()
    	{
    		Add(this.ObjetMembre.MonEvent, this.MonEvent);
    	}
    	void Add(EventHandler emetteur, EventHandler redirigeur)
    	{
    		emetteur += delegate(object sender, EventArgs e) { redirigeur(this, e); };
    	}
    }
    Où MonEvent est de meme signature dans la classe Machin et dans l'objet ObjetMembre.

    Mais le compilo nous affirme que "L'événement 'ObjetMembre.MonEvent' ne peut apparaître qu'à gauche de += ou -= (sauf en cas d'utilisation à partir du type 'ObjetMembre')"

    On ne peut donc pas récupérer une référence vers un event pour lui abonner des méthodes de façon générique. Arg.

    Donc à part une collection de monObjet.MonEvent += delegate(object sender, LeBonEventArgs e) { this.MonEvent(this, e); }; dans le constructeur, point de salut ?
    ಠ_ಠ

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

Discussions similaires

  1. [XL-2007] Création de plusieurs onglets basés sur 2 modèles
    Par elblobo dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 28/10/2013, 14h54
  2. [XL-2007] Evenement Change sur combobox crée dynamiquement [Controls et Event]
    Par znmile dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 03/07/2012, 11h29
  3. Réponses: 3
    Dernier message: 24/05/2006, 10h26
  4. Evenement clavier sur toute l'interface
    Par Guybrush dans le forum Agents de placement/Fenêtres
    Réponses: 4
    Dernier message: 08/02/2005, 12h13
  5. capter l'evenement clic sur une cellule d'un string grid
    Par lasconic dans le forum Composants VCL
    Réponses: 3
    Dernier message: 25/06/2003, 10h51

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