2009-10-15 4 views
4

Je remarque qu'il ya un certain nombre d'événements différents, je peux saisir quand je travaille avec un Windows Form .NET (ou tout autre contrôle, d'ailleurs) - à l'ouverture, il y a:Dans quel ordre les événements de formulaires .NET Windows sont-ils déclenchés?

  • charge
  • Activated
  • On a représenté
  • VisibleChanged

Et lors de la fermeture, il y a:

  • Laisser
  • FormClosed
  • FormClosing
AU REBUT

plus tous les autres que j'ai raté. Je sais que je pourrais mettre un messagebox dans chaque événement, puis exécuter mon application et écrire l'ordre, mais je doute que je m'en souvienne.

Y at-il une ligne de référence qui répertorie les -order- dans lequel ces événements se produisent, pour les formulaires et autres contrôles? Je ne peux pas le trouver sur MSDN, même si je l'ai peut-être manqué quelque part.

Répondre

7

Il est également appelé le cycle de vie des applications gagnant-formes. Chaque technologie .net a un document sur ceux-ci.

Winforms - http://blogs.msdn.com/jaredpar/archive/2007/01/08/windows-forms-event-lifecycle.aspx

formulaire de démarrage

  1. OnHandleCreated
  2. OnCreateControl
  3. OnLoad
  4. OnActivated
  5. OnShown

Formulaire arrêt

  1. OnClosing
  2. OnClosed
  3. OnDeactivate
  4. OnHandleDestroyed
+2

+1 pour mentionner "cycle de vie" - sachant que le mot clé magique est une aide énorme lors de la recherche – overslacked

+0

J'ai trouvé que dans des cas particuliers Onload peut être appelé avant OnCreateControl. Ce cas est Contorl.CreateGraphics(). – qub1n

2

Affichage d'un formulaire:

  1. Control.HandleCr
  2. Control.BindingContextChanged
  3. Forme.Charge
  4. Control.VisibleChanged
  5. Control.GotFocus
  6. Form.Activated
  7. Form.Shown

Fermeture d'une forme:

  1. Form.Closing
  2. Formulaire .FormClosing
  3. Form.Closed
  4. Form.FormClosed
  5. Form.Deactivate
  6. Control.LostFocus
  7. Control.HandleDestroyed
  8. Component.Disposed
0

J'ai vu ce comportement, peut avoir quelque chose faire avec MDI:

form.Focus(); // calls OnHandleCreated (this.Handle is x) 
form.Show(); // calls OnLoad (this.Handle is still x), then OnHandleCreated (this.Handle is y) 
Questions connexes