web-dev-qa-db-fra.com

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

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

49
Ananth

Voir 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, mais cet événement est déclenché avant que l'événement Load ne se produise.
  • Charger: 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.
  • Montré: Cet événement se produit chaque fois que le formulaire est affiché pour la première fois.
  • Paint: cet événement se produit lorsque le contrôle est redessiné.
  • Désactiver: cet événement se produit lorsque le formulaire perd le focus et n'est pas le formulaire actif.
  • Clôture: cet événement se produit lorsque le formulaire se ferme.
  • Fermé: cet événement se produit lorsque le formulaire est en cours de fermeture.
69
Galwegian
  • L'événement Load se déclenche lorsque le formulaire a été initialisé, après la création de son handle mais avant son affichage.

  • L'événement Shown 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 affichez-le à nouveau, Shown se déclenchera à nouveau. (Mais Load ne le fera pas)

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

23
SLaks

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

13
matrix

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 concentration et de validation

Lorsque vous modifiez le focus à l'aide du 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 comme suit ordre:

Enter
GotFocus
Leave
Validating
Validated
LostFocus

Lorsque vous modifiez le focus à l'aide de 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
7
Taja_100

La commande 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 forum.

3
Stefan Valianu