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 :

Débutant : méthode override OnLoad(e) ?


Sujet :

C#

  1. #1
    Membre confirmé
    Avatar de betsprite
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    472
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 472
    Points : 528
    Points
    528
    Par défaut Débutant : méthode override OnLoad(e) ?
    Bonjour,

    dans le cadre d'un développement web en ASP.Net avec du code C#, j'ai pu rencontrer sur internet la méthode suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    protected override void OnLoad(System.EventArgs e)
    avec comme dernière ligne de contenu :

    Pourriez-vous m'expliquer :

    - Ce que fait cette fonction qui a déjà un nom bien défini, à savoir OnLoad ?
    - Pourquoi en paramètre on a un événement alors qu'on a fait aucune action pour le déclencher
    - Que veut dire override ?
    - A quoi sert le code
    ?

    Je vous remercie !

  2. #2
    Membre éclairé Avatar de ppphil
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2007
    Messages : 612
    Points : 685
    Points
    685
    Par défaut
    La classe dans laquelle tu as trouvé cette fonction est une classe héritée d'une classe mère.
    Dans la classe mère, il y a une fonction virtuelle qui peut contenir du code générique à toutes les classes filles.
    Dans la classe fille, tu redéfinis (override) cette fonction afin qu'elle exécute ce que la classe fille doit faire et non pas la classe mère ou la classe soeur.
    Par contre, il est important que ce que fait cette fonction dans la classe mère éxécuté d'où le base.OnLoad()
    Le paramètre EventArgs n'est qu'un paramètre qui contient les données nécessaires à une fonction OnLoad...
    C'est tout...
    A part ça, si tu cherches de la doc, fais une recherche sur "Polymorphisme"

  3. #3
    Membre éclairé Avatar de chamamo
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    588
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 588
    Points : 735
    Points
    735
    Par défaut
    tout control contient cette méthode

    le contrôle appelle cette méthode pour déclencher l'événement Load
    tu peux redéfinir cette méthode pour fournir le traitement supplémentaire, et ce n'est pas à toi de la déclencher, c'est le controle.

    la redéfinition se fait avec le mot clé override,

    base.OnLoad(e) sert à appeler l'évènement qui se retrouve dans la classe de base (la classe mère)

  4. #4
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 177
    Points : 25 125
    Points
    25 125
    Par défaut
    je vais surement redonder un peu ...

    le framework est écrit en .net
    ce onload se trouve surement une form
    quand on créé un form, il hérite de la classe form
    dans le framework microsoft a pris l'habitude de déclencher les évènements (Load) dans une méthode protected overridable préfixée de On (Onload)

    overrider signifie redéfinir
    base représente la classe de niveau précédent de l'héritage et permet donc de spécifier dans ce cas qu'on veut aussi exécuter la méthode d'origine
    (sinon l'évènement ne sera pas déclenché, mais dans certains cas on veut totalement remplacer le fonctionnement de la méthode et on appelle pas la méthode de base)

    microsoft a aussi utilisé un comportement pour tous les évènements, à savoir envoyer sender (l'instance qui déclenche l'évènement) et e
    e est une classe contenant tous les paramètres liés à l'évènement
    e est toujours du type system.EventArgs ou d'un type dérivé
    par exemple pour l'évent mousemove, c'est un mouseeventargs qui contient le x et le y
    et en fait le system.eventargs de base signifie qu'il n'y a pas de paramètre, mais au moins ca garde le même système
    petite parenthèse, sender permet de gérer par exemple le clic de plusieurs boutons par une seule méthode, et grâce à lui on saura quel bouton est cliquer (caster sender en ce qu'on attend, ou tester son type avant si ca peut être plusieurs chose)

    au final s'abonner à l'évènement load ou overrider la méthode qui le déclenche revient au même, on pourra y glisser du code qu'on veut exécuter au chargement du form
    sauf qu'il vaut mieux overrider, c'est un pouillème plus performant

Discussions similaires

  1. [Débutant] Méthode de Newton
    Par foujeu dans le forum MATLAB
    Réponses: 18
    Dernier message: 20/12/2006, 11h09
  2. [EJB] [débutant] [Méthode]EJB et présentation web
    Par Eric Berger dans le forum Java EE
    Réponses: 6
    Dernier message: 03/08/2006, 23h42
  3. [algoritmique][débutant]Méthode récursive
    Par lejimi dans le forum Langage
    Réponses: 7
    Dernier message: 16/01/2006, 19h54
  4. Réponses: 2
    Dernier message: 05/01/2006, 14h17
  5. [Débutant] Méthode super()
    Par KooX dans le forum Langage
    Réponses: 3
    Dernier message: 07/11/2004, 21h28

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