Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
929 connectés 

  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  Tabcontrol trop plein ? Onglet qui met une plombe à charger...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Tabcontrol trop plein ? Onglet qui met une plombe à charger...

n°1341033
-VDV-
Et pas DVD ! Lisez mieux !
Posté le 06-04-2006 à 22:28:25  profilanswer
 

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 ? :heink:

mood
Publicité
Posté le 06-04-2006 à 22:28:25  profilanswer
 

n°1341205
moi23372
Posté le 07-04-2006 à 10:05:37  profilanswer
 

je pense que ça vient coté framework.

n°1351199
Arjuna
Aircraft Ident.: F-MBSD
Posté le 21-04-2006 à 13:38:16  profilanswer
 

-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).
 
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 ? :heink:


 
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.

Message cité 1 fois
Message édité par Arjuna le 21-04-2006 à 13:38:48
n°1351668
-VDV-
Et pas DVD ! Lisez mieux !
Posté le 22-04-2006 à 02:13:55  profilanswer
 

Arjuna a écrit :

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.


 
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 ^^


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  Tabcontrol trop plein ? Onglet qui met une plombe à charger...

 

Sujets relatifs
problème pour charger des mesh au format .xcharger toutes les images avant d'afficher le site ?
Onglet dans un formActiver un onglet voulu
Icone dans la barre des taches pour IE ou dans l'onglet pour firefoxStage C++ - plein de questions de novice
IDL, code utilisateur, exceptions, threads, enfin plein de trucs...page plein ecran
Php ne peut charger l'extension mysql[netscape][firefox] Ouvir un lien dans une nouvel onglet
Plus de sujets relatifs à : Tabcontrol trop plein ? Onglet qui met une plombe à charger...


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR