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
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
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
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
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
C'était bien celaEnvoyé par tanita-twist
Le designer de Visual Studio, via la méthode InitializeComponent() le fait pourtant dans le constructeur...Envoyé par benji_dv
A mon sens, après la méthode InitializeComponent(), ils le sont.Envoyé par dev01
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...
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
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.
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 ...Envoyé par NicolasJolet
- MVP C#
-Tout problème a une solution, le vrai problème est de trouver la solution .....
- Linux & mono : l'avenir
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.Envoyé par NicolasJolet
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
Ok, c'est dans ce sens-là que je l'avais compris.
Merci à tous pour vos réponses
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager