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

Windows Forms Discussion :

Load vs ctor


Sujet :

Windows Forms

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Février 2006
    Messages
    413
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 413
    Points : 286
    Points
    286
    Par défaut Load vs ctor
    Bonjour à tous,
    Question assez basique me semble-t-il :
    Pour un objet visuel, quel intérêt y-a-t-il à utiliser le Load plutôt que le constructeur?

    Merci d'avance,
    Nicolas

  2. #2
    Rédacteur
    Avatar de benji_dv
    Homme Profil pro
    Architecte
    Inscrit en
    Juillet 2005
    Messages
    375
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 375
    Points : 1 276
    Points
    1 276
    Par défaut
    Bonjour,
    En fait, la seule différence entre le load et le constructeur est le moment où l'appel est exécuté.
    Après, c'est une question de choix.
    Moi je trouve que ce qui doit être initié dans une classe (instanciations de bases, mise en place des valeurs par défaut,...), doit l'être dans le constructeur (sauf cas particuliers). Ou, dans le constructeur, tu vas placer des conditions de garde au chargement de l'écran, car au plus tot tu vérifies que ton utilisateur a le droit d'utiliser l'écran, au plus performant l'écran sera (inutile de charger une interface lourde, si l'utilisateur n'a pas le droit p. ex.)

    Le load est à mes yeux une des méthodes dans lesquelles on va entrer les procédures de chargement des combobox, listes,...

    Maintenant, rien n'empèche de faire différemment !

    Il y a autant de façon de programmer que de développeurs sur terre (lol),

    @+
    Benjamin DEVUYST
    Et comme l'a dit Rick Osborne
    "Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live"
    http://bdevuyst.developpez.com
    http://blog.developpez.com/bdevuyst
    www.bdevuyst.com

  3. #3
    Rédacteur
    Avatar de dev01
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 451
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 451
    Points : 6 017
    Points
    6 017
    Par défaut
    Salut .

    pour completer la réponse au dessus il faut savoir que quand tu es dans le contructeur certain éléments graphique ne sont pas initialisés. Il faut attendre d'être dans le Load pour être sur que tout ce qui est graphique soit initialisé.
    - MVP C#
    -Tout problème a une solution, le vrai problème est de trouver la solution .....
    - Linux & mono : l'avenir

  4. #4
    Rédacteur
    Avatar de benji_dv
    Homme Profil pro
    Architecte
    Inscrit en
    Juillet 2005
    Messages
    375
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 375
    Points : 1 276
    Points
    1 276
    Par défaut
    Tout à fait, et pour être complet, il me semble important d'ajouter, qu'en fait le constructeur est la première méthode (pour le développeur) appelée lors de l'instanciation d'une classe.
    Benjamin DEVUYST
    Et comme l'a dit Rick Osborne
    "Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live"
    http://bdevuyst.developpez.com
    http://blog.developpez.com/bdevuyst
    www.bdevuyst.com

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Février 2006
    Messages
    413
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 413
    Points : 286
    Points
    286
    Par défaut
    Citation Envoyé par tanita-twist
    [...]si j'ai bien compris ce que tu entends par Load, à savoir la méthode Load des contrôles[...]
    C'était bien cela

    Citation Envoyé par benji_dv
    Le load est à mes yeux une des méthodes dans lesquelles on va entrer les procédures de chargement des combobox, listes,...
    Le designer de Visual Studio, via la méthode InitializeComponent() le fait pourtant dans le constructeur...

    Citation Envoyé par dev01
    [...]pour completer la réponse au dessus il faut savoir que quand tu es dans le contructeur certain éléments graphique ne sont pas initialisés.
    A mon sens, après la méthode InitializeComponent(), ils le sont.


    Moi je ne vois vraiment pas d'utilité à utiliser l'évènement Load, pourtant il doit bien exister une raison à ce que cet évènement existe...

  6. #6
    Rédacteur
    Avatar de benji_dv
    Homme Profil pro
    Architecte
    Inscrit en
    Juillet 2005
    Messages
    375
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 375
    Points : 1 276
    Points
    1 276
    Par défaut
    Lorsque j'entends Le load est à mes yeux une des méthodes dans lesquelles on va entrer les procédures de chargement des combobox, listes,.

    je distingue la création des composants (InitializeComponent()) du fait de pomper des informations depuis les fichiers (ou la db) de paramétrage de ton appli pour remplir les controles de l'interface graphique.

    A mes yeux ce sont deux choses différentes : d'une part mettre en place l'écran (techniquement) et d'autre part le contenu des controles,...

    Le fait de disposer d'autant d'évènements à l'instanciation, au focus et à la fermeture des écrans permet une plus grande modularité.
    Benjamin DEVUYST
    Et comme l'a dit Rick Osborne
    "Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live"
    http://bdevuyst.developpez.com
    http://blog.developpez.com/bdevuyst
    www.bdevuyst.com

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Février 2006
    Messages
    413
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 413
    Points : 286
    Points
    286
    Par défaut
    Oui on pourrait le voir comme cela.
    J'ai tendance à toujours tout faire dans le constructeur mais on pourrait effectivement dire que le constructeur s'occupe de tout ce qui est présentation et le Load de tout ce qui est donnée. Quoique la différence n'est pas toujours bien perceptible...

    Une utilité que je viens de trouver est que l'on peut appeler la méthode Close() dans le Load mais pas dans le constructeur.

  8. #8
    Rédacteur
    Avatar de dev01
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 451
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 451
    Points : 6 017
    Points
    6 017
    Par défaut
    Citation Envoyé par NicolasJolet
    A mon sens, après la méthode InitializeComponent(), ils le sont.
    et bien non, tout simplement parce que l'initialisation graphique de la fenetre n'est pas finie ... Or certain composant on besoin de connaitre l'état de leur container pour finir de s'initialiser ...
    - MVP C#
    -Tout problème a une solution, le vrai problème est de trouver la solution .....
    - Linux & mono : l'avenir

  9. #9
    Membre actif
    Profil pro
    Inscrit en
    Février 2006
    Messages
    413
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 413
    Points : 286
    Points
    286
    Par défaut
    Haaa, voilà qui peut orienter vers un choix...

    Donc pour être certain de ne pas avoir de problèmes avec un contrôle qui n'aurait pas terminé de s'initialiser, il vaudrait mieux faire un maximum de travail sur les contrôles dans le Load ?!

    Enfin comme l'a dit benji_dv "Il y a autant de façon de programmer que de développeurs sur terre", donc en gros tout cela est une question de choix...

  10. #10
    Rédacteur
    Avatar de dev01
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 451
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 451
    Points : 6 017
    Points
    6 017
    Par défaut
    Citation Envoyé par NicolasJolet
    Haaa, voilà qui peut orienter vers un choix...

    Donc pour être certain de ne pas avoir de problèmes avec un contrôle qui n'aurait pas terminé de s'initialiser, il vaudrait mieux faire un maximum de travail sur les contrôles dans le Load ?!

    Enfin comme l'a dit benji_dv "Il y a autant de façon de programmer que de développeurs sur terre", donc en gros tout cela est une question de choix...
    Non c'est pas exactement vrai.

    Tu fait toute les initialisation qui ne s'appuie pas sur un controle graphique dans le contructeur (c'est la base de la POO). Par contre pour ce qui touche à une modification de controle (style, certain ajout, etc ...) il vaut mieux le mettre dans le Load. Le problème de tout ça c'est qu'il n'existe pas de règle stricte, je sais d'expérience mais les propriétés des controles incriminés ne sont pas les même pour chaque controle ...
    - MVP C#
    -Tout problème a une solution, le vrai problème est de trouver la solution .....
    - Linux & mono : l'avenir

  11. #11
    Membre actif
    Profil pro
    Inscrit en
    Février 2006
    Messages
    413
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 413
    Points : 286
    Points
    286
    Par défaut
    Ok, c'est dans ce sens-là que je l'avais compris.

    Merci à tous pour vos réponses

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

Discussions similaires

  1. insertion des blob avec LOAD DATA...
    Par orli1x51 dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 27/10/2003, 18h05
  2. visualation d'un Loading en local
    Par poxvx dans le forum Flash
    Réponses: 5
    Dernier message: 15/07/2003, 11h05
  3. Création d'un loading
    Par FLB dans le forum Flash
    Réponses: 5
    Dernier message: 09/07/2003, 22h08
  4. Loading
    Par Hermant dans le forum Flash
    Réponses: 2
    Dernier message: 17/02/2003, 11h28
  5. Comment insérer un loading ?
    Par ajit dans le forum Flash
    Réponses: 4
    Dernier message: 21/11/2002, 14h33

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