Les programmeurs qui ont travaillé avec VB6 ont tendance à mettre beaucoup de code dans l'événement Load, dans VB6 cet événement a été utilisé pour initialiser le formulaire. Mais ce n'est plus approprié dans Windows Forms, la classe Form peut avoir un constructeur. La méthode .NET consiste à initialiser les objets de classe dans le constructeur, il y a très peu de raisons impérieuses de ne pas le faire pour la classe Form. L'événement Load s'exécute juste après la création du handle de fenêtre pour le formulaire, juste avant qu'il ne soit visible par l'utilisateur. Vous devez uniquement écrire du code dans le gestionnaire d'événements qui dépend de la création du handle. Il n'y a pas de charge de code qui soit qualifiée pour cette exigence sauf un type: code qui nécessite que la taille et l'emplacement de la fenêtre soient connus.
Les valeurs des propriétés Taille et Emplacement au moment du design d'un Formulaire ne sont pas les mêmes que leurs valeurs réelles lorsque le formulaire s'exécute sur une autre machine. Le formulaire peut être redimensionné pour prendre en charge la taille de la police système ou le paramètre DPI de la carte vidéo sur la machine cible. Les préférences de l'utilisateur jouent également un rôle, l'utilisateur peut avoir sélectionné une taille de police différente pour la légende de la fenêtre. Cela ne vous intéresse généralement pas, sauf si vous voulez que la fenêtre ait une position particulière sur le bureau ou soit alignée avec une autre fenêtre.
L'écriture de code dans l'événement Load, par exemple initialiser les contrôles TreeView ou ListView, peut ralentir considérablement le temps de démarrage. Lorsque vous le faites dans le constructeur, Windows Forms n'a pas encore besoin de mettre à jour la fenêtre physique, il n'a pas encore été créé. Une fois le contrôle natif créé, Winforms l'initialise avec une mise à jour groupée au lieu d'un nœud/élément à la fois, comme cela se produit lorsque le code s'exécute dans l'événement Load. Grande différence. Last but not least: vous ne devriez jamais utiliser l'événement Load, vous devez remplacer la méthode OnLoad().Cela garantit que le code s'exécute dans un ordre prévisible lorsque vous (ou quelqu'un d'autre) hérite de votre classe Form. IntelliSense vous aide à écrire cette méthode, il suffit de taper "protected onl" et d'appuyer sur tab pour que IntelliSense auto-complète la méthode. Notez comment vous avez le choix de mettre du code avant ou après l'appel de base.OnLoad(), c'est ainsi que vous contrôlez qui est le boss. Vous êtes le patron quand vous le mettez après, pas souvent le bon choix btw.
Une troisième possibilité est l'événement affiché. J'ai trouvé que certaines choses comme "this.Activate();", "this.BringToFront();" et "this.Focus();" avoir une meilleure chance d'y travailler que dans l'événement FormLoad. – RenniePet
Copie possible de [événement Winforms Form Constructeur vs Load] (http://stackoverflow.com/questions/264396/winforms-form-constructor-vs-load-event) –
voir aussi https://stackoverflow.com/questions/ 3670806/form-load-event-or-override-onload – DaveInCaz