49 votes

Ordre des événements 'Form.Load', 'Form.Shown' et 'Form.Activated' dans Windows Forms

Quelle est la différence entre les événements Form.Load, Form.Shown et Form.Activated? Quel est l'ordre dans lequel ils sont déclenchés?

71voto

Galwegian Points 29966

Consultez le cycle de vie des événements Windows Forms:

  • Déplacer : Cet événement se produit lorsque le formulaire est déplacé. Bien que par défaut, lorsqu'un formulaire est instancié et lancé, l'utilisateur ne le déplace pas, cet événement est déclenché avant que l'événement Load ne se produise.
  • Chargement : Cet événement se produit avant l'affichage d'un formulaire pour la première fois.
  • VisibleChanged : Cet événement se produit lorsque la valeur de la propriété Visible change.
  • Activé : Cet événement se produit lorsque le formulaire est activé en code ou par l'utilisateur.
  • Affiché : Cet événement se produit chaque fois que le formulaire est affiché pour la première fois.
  • Peinture : Cet événement se produit lorsque le contrôle est redessiné.
  • Désactivation : Cet événement se produit lorsque le formulaire perd le focus et n'est pas le formulaire actif.
  • Fermeture : Cet événement se produit lorsque le formulaire est en train de se fermer.
  • Fermé : Cet événement se produit lorsque le formulaire est fermé.

23voto

SLaks Points 391154
  • Le Load événement se déclenche lorsque le formulaire a été initialisé, après la création de son gestionnaire mais avant qu'il ne soit affiché.

  • Le Shown événement se déclenche après la première fois que le formulaire devient visible, lorsque vous appelez form.Show() (ou form.Visible = true).
    Si vous masquez votre formulaire, puis le montrez à nouveau, Shown se déclenchera à nouveau. (Mais pas le Load)

  • Le Activate événement se déclenche lorsque l'utilisateur passe à votre formulaire.
    Si l'utilisateur passe à un autre programme (ou formulaire), puis revient à votre formulaire, Activate se déclenchera à nouveau.

13voto

matrix Points 668

De plus, l'événement Form.Activate peut être déclenché plusieurs fois. Par exemple, si vous ouvrez une boîte de dialogue à partir de votre formulaire, et que lorsque vous cliquez sur n'importe quel bouton de la boîte de dialogue, et que vous revenez au formulaire, Form.Activate est déclenché. Il en va de même pour toute autre boîte de dialogue telle que FileOpenDialog.

8voto

Taja_100 Points 21

Les classes Form et Control exposent un ensemble d'événements liés au démarrage et à l'arrêt de l'application. Lorsqu'une application Windows Forms démarre, les événements de démarrage du formulaire principal sont déclenchés dans l'ordre suivant :

Control.HandleCreated
Control.BindingContextChanged
Form.Load
Control.VisibleChanged
Form.Activated
Form.Shown

Lorsqu'une application se ferme, les événements d'arrêt du formulaire principal sont déclenchés dans l'ordre suivant :

Form.Closing
Form.FormClosing
Form.Closed
Form.FormClosed
Form.Deactivate

Événements de focus et de validation

Lorsque vous changez le focus en utilisant le clavier (TAB, SHIFT+TAB, etc.), en appelant les méthodes Select ou SelectNextControl, ou en définissant la propriété ActiveControl sur le formulaire actuel, les événements de focus de la classe Control se produisent dans l'ordre suivant :

Enter
GotFocus
Leave
Validating
Validated
LostFocus

Lorsque vous changez le focus en utilisant la souris ou en appelant la méthode Focus, les événements de focus de la classe Control se produisent dans l'ordre suivant :

Enter
GotFocus
LostFocus
Leave
Validating
Validated

3voto

Stefan Valianu Points 781

L'ordre serait Form.Load, qui initialise le formulaire et appelle les contrôles, Form.Shown, qui marque le cadre comme visible (même en C++, cela se fait après la création du formulaire), et Form.Activated, qui donne le focus au formulaire.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X