Tabcontrol trop plein ? Onglet qui met une plombe à charger... - C#/.NET managed - Programmation
Marsh Posté le 21-04-2006 à 13:38:16
-VDV- a écrit : J'ai un tabControler avec dans un onglet un tableLayout que je remplis lors du lancement de l'application avec environ 250 label+textbox pour faire un gros formulaire (et NON je ne peux pas le faire plus petit). |
Regarde du côté de
this.SuspendLayout()
this.ResumeLayout()
A mettre dans les évents qui se lancent quand tu accèdes à ton tabcontrol.
En effet, Windows va redessiner l'intégralité du contrôle chaque fois qu'un contrôle est ajouté. Ainsi, quand y'en a pas beaucoup, ça va vite, autant quand y'en a un max...
SuspendLayout() force Windows à ne pas redessiner ta form.
Marsh Posté le 22-04-2006 à 02:13:55
Arjuna a écrit : Regarde du côté de |
La génération des controls se fait comme je l'ai dit, "onload" de l'application, donc bien avant de l'afficher. Bien evidement, la generation complete du formulaire est entre suspend/resumelayout (precision, j'ai meme un resumelayout(true) pour forcer la mise a jour du composant toujours "onload" )
C'est UNIQUEMENT en cliquant sur l'onglet, donc uniquement en affichant le formulaire généré bien avant, et uniquement a la premiere visualisation. Il n'y a AUCUN code executé. La seule explication, c'est qu'apparement il doit "charger" tout ca en ram, vu que meme si les controls sont crées, utilisables, et générés bien avant, au moment du clic sur cet onglet, l'application gonfle d'une 20aine de mega en ram ^^
Marsh Posté le 06-04-2006 à 22:28:25
J'ai un tabControler avec dans un onglet un tableLayout que je remplis lors du lancement de l'application avec environ 250 label+textbox pour faire un gros formulaire (et NON je ne peux pas le faire plus petit).
L'application se lance sans probleme en un clin d'oeil, tout est généré sans probleme et tres rapidement. Par contre, lors du premier clic sur cet onglet precis, on peut VOIR reellement les champs se rajouter, ca prend bien 10 longues secondes avec CPU a 100% et appli paralysée...
Je sais pas trop ce qu'il fait... Mais une fois cette premiere visualisation, je peux changer d'onglet et y revenir sans que ca soit lent...
Donc je comprends pas... J'ai vérifié, tout est bien généré "onload", et aucun code n'est executé pendant ces 10 secondes...
Il se passe quoi ? Y'a moyen de regler ce probleme ?