Déclenchement d'un événement après la fin d'une mise en page Winform
Je suis en train de travailler sur un C# WinForm application.
Je veux déclencher un traitement une fois que le formulaire a été "montré" et la mise en page du formulaire est complet.
Je suis l'aide de la "_Shown" de l'événement, mais ce qui semble déclencher avant la mise en page du formulaire est terminé. Est-il de l'événement que je peux utiliser les feux une fois la présentation terminée?
source d'informationauteur BENBUN Coder
Vous devez vous connecter pour publier un commentaire.
Je ne vois pas un événement après avoir Montré que vous pouvez utiliser pour cela. Ne pourriez-vous pas utiliser un timer pour retarder le traitement de votre traitement dans le cas?
Mettre
Application.DoEvents()
au début de la forme de la Montre de gestionnaire d'événements. Cela va forcer tous les contrôles soient rendus.Un vieux truc en VB6 utilisé pour être utiliser de la Peinture de l'événement:
C'est un peu hacky, mais il fonctionne
Cela fonctionne pour moi et c'est beaucoup moins "hacky" que d'autres suggestions:
AUSSI loin que je me souvienne, l'ordre des événements est quelque chose comme
Donc, si quelque chose est toujours le cas après
Form.Show
c'est à cause de la façon dont vous codés.Êtes-vous peut-être de la création du formulaire dynamiquement?
Essayez d'utiliser Forme.GotFocus (héritée de contrôle)..
quelque chose comme cela.
Selon msdn , le suivant se produit:
Lorsque vous changez le focus à l'aide du clavier (TAB, MAJ+TAB, et ainsi de suite), par l'appel de la Sélectionner ou SelectNextControl méthodes, ou par la définition de la ContainerControl..::.Propriété ActiveControl à la forme actuellel'accent événements se produisent dans l'ordre suivant:
La meilleure solution est l'Illustré (le) de l'événement: http://msdn.microsoft.com/en-us/library/system.windows.forms.form.shown.aspx
"L'Illustré événement n'est soulevée la première fois qu'un formulaire est affiché; par la suite, réduire, agrandir, restaurer, masquer, afficher, ou de l'invalidation et de mise à jour ne va pas augmenter de cet événement."