J'ai un Windows Forms (C#) projet avec plusieurs comboboxes/listboxes etc qui sont remplis lors du chargement du formulaire. Le problème est que le chargement des comboboxes/listboxes est lent, et puisque le chargement est effectué lorsque le formulaire tente d'afficher le formulaire entier n'est pas affiché jusqu'à ce que tous les contrôles ont été remplis. Cela peut dans certaines circonstances être 20 + secondes. S'il y avait un type d'événement Form_finished_loaded, j'aurais pu y mettre mon code, mais je ne peux pas trouver un événement qui se déclenche une fois que le formulaire a fini de dessiner les contrôles de base.chargement Délai de combobox lorsque le formulaire charges
j'ai une exigence bien - le chargement doit être fait dans le thread principal (puisque je reçois les éléments d'un COM-application conviviale non-threading).
J'ai trouvé une solution possible, mais peut-être il y a une meilleure façon? Je peux créer un System.Timer.Timer lors de la création du formulaire et faire en sorte que le premier tick soit appelé environ 1 seconde plus tard, puis remplir les listes à partir de ce tick. Cela donne suffisamment de temps à la forme pour être affichée avant qu'elle ne commence à remplir les listes.
Quelqu'un at-il d'autres conseils sur la façon de retarder le chargement des contrôles?
+1 pour le conseil BeginUpdate/EndUpdate. –
BeginUpdate et EndUpdate ne sont-ils pas utilisés pour suspendre la peinture tout en chargeant un grand nombre d'éléments de façon séquentielle dans le contrôle et non quelque chose que vous utiliseriez pour un processus de longue durée? +1 pour l'événement affiché. –
Ça a marché! Le BeginUpdate/EndUpdate a fait une différence spectaculaire lors de l'ajout d'énormes collections. Jusqu'à 10 fois plus d'amélioration –