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 :

Besoin d'aide svp


Sujet :

C#

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2013
    Messages : 13
    Points : 20
    Points
    20
    Par défaut Besoin d'aide svp
    bonsoir , c'est quoi un EventHandler ?

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Alors en fait c'est pas très compliqué une fois qu'on a compris, mais c'est pas forcément facile à expliquer... je vais quand même essayer.

    Un EventHandler est un type de delegate ("délégué"), c'est à dire quelque chose qui représente une méthode à appeler plus tard. Ca permet d'appeler une méthode sans savoir à l'avance quelle méthode ce sera...

    Il y a plusieurs types de delegates, chacun caractérisé par sa signature. Par exemple, Action est un delegate qui représente une méthode sans paramètre qui ne renvoie pas de valeur. Sa définition est la suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public delegate void Action();
    Une variable de type Action peut donc recevoir n'importe quelle méthode qui a une signature compatible. Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    void Main()
    {
        Action x = Toto;
        ...
        x(); // Appelle en fait Toto()
    }
    ...
     
    void Toto()
    {
    }
    Pour revenir à EventHandler, c'est un delegate qui représente la méthode qui gère un événement. Sa signature est la suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public delegate void EventHandler(object sender, EventArgs e);
    sender représente l'objet qui a déclenché l'événement; e représente les données de l'évènement. En pratique, EventArgs ne contient aucune donnée utile, mais ça sert de classe de base pour les données d'événements plus spécialisés

    Un événement est déclaré avec un nom et un type ; ce type est un delegate, qui représente la signature des méthodes qui gèrent cet événement. Par exemple l'événement Click est déclaré comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public event EventHandler Click;
    Autrement dit, les méthodes qui gèrent l'événement Click doivent avoir une signature compatible avec le delegate EventHandler. Par exemple la méthode suivante est compatible :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    private void button1_Click(object sender, EventArgs e)
    {
    }
    Mais celle ci ne n'est pas, car elle n'a pas les bons paramètres :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    private void button1_Click(int i, string s)
    {
    }

Discussions similaires

  1. Réponses: 3
    Dernier message: 19/04/2007, 07h50
  2. Encapsulation, besoin d'aide svp
    Par 3xplo dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 09/02/2007, 14h52
  3. besoin d'aide SVP
    Par geulmim dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 03/04/2006, 10h01
  4. Réponses: 5
    Dernier message: 21/01/2006, 23h24

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