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 :

évenement nouveau composant


Sujet :

C#

  1. #1
    Membre habitué
    Inscrit en
    Juin 2007
    Messages
    359
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 359
    Points : 153
    Points
    153
    Par défaut évenement nouveau composant
    Bonjour, j'ai fait un nouveau composant tout simple, hérité de Panel, et je voudrais redéfinir la gestion de l'évenement
    DragEnter(object sender, DragEventArgs e) pour toutes les instances de cette classe, mais je ne vois pas comment faire, ni même si c'est possible,...
    Si quelqu'un de bonne volonté voulait bien faire profiter un débutant en C# de ses connaissances sur le sujet, ce serait sympa !!!

    Merci et bonne journée

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 277
    Points : 1 521
    Points
    1 521
    Par défaut
    Il suffit de déclarer un gestionnaire pour cet événement dans le constructeur de ta classe dérivée et de l'implémenter.

  3. #3
    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
    Deux possibilités : ou bien abonner une fonction à l'événement (lePanel.DragEnter += taMethode), mais puisque dans ton cas tu hérites de panel, tu peux surcharger la méthode protégée OnDragEnter dans ta classe dérivée.

    Ne pas oublier d'appeler base.OnDragEnter à la fin de ta surcharge, puisque c'est elle qui va lancer l'event DrageEnter.
    ಠ_ಠ

  4. #4
    Membre habitué
    Inscrit en
    Juin 2007
    Messages
    359
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 359
    Points : 153
    Points
    153
    Par défaut
    Tout d'abord, merci d'avoir répondu,
    J'i essayé d'appliquer ce que vous m'avez dit, c'est à dire que j'ai tenté de redéfinir la fonction OnDragEnter(DragEventArgs), ce qui marche très bien, le seul problème, c'est que ce que voudrais c'est récupéré non pas OnDragEnter, mais simplement DragEnter(object sender, DragEventArgs e);
    En effet, dans le deuxième cas je peux accéder à l'élément dragué, et pas dans l'autre,

    Donc, j'ai définit dans ma classe "Planning" la fonction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    private void Planning_DragEnter(object sender, DragEventArgs e)
            {
                int i = 0; //juste pour voir si j'entre
            }
    Dans laquelle j'ai mis un point d'arrêt, mais rien n'y fait, il rentre pas !!!

    Si quelqu'un sait comment faire (en espérant que j'ai été assez clair)

  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
    J'explique : pour une event Bidule, on a :
    public xxxEventHandler Bidule;
    protected override void OnBidule(xxxEventArgs e);

    Le premier est visible de l'extérieur de la classe : on peut y abonner des fonctions du type void f(object sender, xxxEventArgs e).
    Le deuxième est protégé : seules les classes filles le voient et peuvent le surcharger, avec protected override OnBidule(xxxEventArgs e).

    Dans le premier cas, le "sender" est l'instance de la classe qui émet l'event (dans ton cas, un panel). En fait, la fonction OnBidule de panel se contente de faire ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    protected virtual void OnBidule(xxxEventArgs e)
    {
      if (Bidule != null) // l'event est null si personne n'est abonné
        Bidule(this, e); // on a des abonnés ? alors zou on lance l'event !
    }
    Donc, dans ton cas, comme tu hérites de Panel, il t'es beaucoup plus simple de "overrider" On Bidule, en l'occurence OnDragEnter.
    En effet, dans le deuxième cas je peux accéder à l'élément dragué
    Dans un cas comme dans l'autre, il est dans le DragEventArgs (nommé e), non ?
    ಠ_ಠ

  6. #6
    Membre habitué
    Inscrit en
    Juin 2007
    Messages
    359
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 359
    Points : 153
    Points
    153
    Par défaut
    Ok, j'ai fait ce que tu m'as dit, et bon, ça MARCHEEEEEEEEEEEE !!!!!!!!!!!!


    Merci !!!

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

Discussions similaires

  1. Nouveau composant basé sur TMainMenu
    Par zoubidaman dans le forum C++Builder
    Réponses: 1
    Dernier message: 27/07/2006, 15h48
  2. Déclenchement des évenements du composant TCPclient
    Par prenaud dans le forum Composants VCL
    Réponses: 6
    Dernier message: 13/07/2006, 16h51
  3. Installer un nouveau composant dans un paquet créé
    Par gmc dans le forum Composants VCL
    Réponses: 1
    Dernier message: 06/03/2006, 12h25
  4. [Conception] Créer un nouveau composant
    Par DamCalle dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 14/06/2005, 11h45
  5. Réponses: 5
    Dernier message: 08/12/2004, 08h52

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