Chargement de treeview [Résolu]

capouto 10 Messages postés lundi 12 mars 2007Date d'inscription 16 septembre 2008 Dernière intervention - 15 sept. 2008 à 12:37 - Dernière réponse : dadamagouil 141 Messages postés samedi 21 août 2004Date d'inscription 8 juin 2010 Dernière intervention
- 11 mars 2009 à 16:36
bonjour,

j'utilise un treeview dans mon programme(C#) qui contient beaucoup de noeuds(environ 10000). Et voila que l'execution de mon programme est devenu tres lente. Quelqu'un aurait il une idée pour porter secours?

PS: il faut signaler que j'ai saisi manuellement tout ca dans la proprieté collection  de treeview.

Cogito
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
TeBeCo 467 Messages postés lundi 24 juin 2002Date d'inscription 9 mars 2011 Dernière intervention - 16 sept. 2008 à 19:34
3
Merci
[auteur/WISHHHMASTER/231972.aspx WishhhMaster] :
euuu non je pense pas

[auteur/CAPOUTO/1004080.aspx capouto] :
pense a valider si le problème est resolu

TeBeCo

Merci TeBeCo 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 73 internautes ce mois-ci

Commenter la réponse de TeBeCo
TeBeCo 467 Messages postés lundi 24 juin 2002Date d'inscription 9 mars 2011 Dernière intervention - 15 sept. 2008 à 13:28
0
Merci
si le treeview le permet il faut utiliser le "VirtualMode" je sais que ca existe pour les ListBox par exemple ca te permet de definir manuellement quand et qui sera veritablement charger en memoire et affiché

de plus je vais emmettre des hypothese que tu n'as pas explicité :
cas 1 :
tes 10k noeuds represente la totalité des noeuds de ton treeview (parent + enfant + enfant des enfant etc ...)
cas 2 :
les 10k noeud sont juste les noeud parent (premiere couche) du treenode

si tu est dans le cas 1 autant tes dire que la demarche que tu utilise est totalement a revoir si tu veux amelioré un peux cela eviter de charger les arborescence enfant pour rien
car a mon avis PERSONNE n'ira regardé les 10k combinaison (et plus) de noeuds
le treeview expose des evenement qui t'indique quand les nodes ont été ouverte "Expand" ou quand elles ont été refermé "Collapse" il te suffit d'ajouter les noeud enfant qu'a ce moment la
onexpand(sender, e)
{
e.node.childnodes.clear();
list<treeviewnode> lstNode = getchilds(e.node)
fillnodes(e.nodes, lstNode);
}

un truc dans le genre, ca te permettra un affichage tjs a jour et moins consequent a utiliser

si tu est dans le cas 2 evite de chargé trop de noeud parent en essyant de controlé le VScrollBar (ou d'implementé toi meme la VScrollBar et en fonction de sa position n'affiché que les noeud necessaire + un peu au dessus / dessoud) avec la meme demarche qu'au dessus pour les childs

TeBeCo
Commenter la réponse de TeBeCo
capouto 10 Messages postés lundi 12 mars 2007Date d'inscription 16 septembre 2008 Dernière intervention - 15 sept. 2008 à 14:50
0
Merci
Merci pour ta reponse. Je suis dans le premier cas et j'aimerais avoir une idée sur ce code:
onexpand(sender, e)
{
e.node.childnodes.clear();
list<treeviewnode> lstNode = getchilds(e.node)
fillnodes(e.nodes, lstNode);
}

si tu pouvais me dire comment faire charger les noeuds enfants comme tu me le conseil
Cogito
Commenter la réponse de capouto
TeBeCo 467 Messages postés lundi 24 juin 2002Date d'inscription 9 mars 2011 Dernière intervention - 15 sept. 2008 à 22:16
0
Merci
je vais pas deviner un truc que t'as déjà coder toi tu sais ce qu'il y a dans tes nodes t'as juste a créé le code pour remplir les nodes quand tu les ouvrent.
depuis quelle source de données tu les remplissais ? ben tu fais pareil mais a la demande plutôt que tout d'un coup
et ouvre la doc a la page "treeview", liste des membres, événements et tu cherches ce qui parlent de expand
si après tout cela tu a encore besoin d'aide je suis prêt a parler salaire, congé payé, etc ... (non hein ?)

TeBeCo
Commenter la réponse de TeBeCo
WishhhMaster 327 Messages postés mardi 17 février 2004Date d'inscription 10 avril 2010 Dernière intervention - 16 sept. 2008 à 01:10
0
Merci
Salut,

Tu as ajoute manuellement 10000 nodes a partir du designer?
Commenter la réponse de WishhhMaster
capouto 10 Messages postés lundi 12 mars 2007Date d'inscription 16 septembre 2008 Dernière intervention - 16 sept. 2008 à 10:41
0
Merci
oui.
merci a tous pour leur reponses. je pense que je sais maintenant ce qu'il faut faire.

CAPOUTO

Cogito
Commenter la réponse de capouto
capouto 10 Messages postés lundi 12 mars 2007Date d'inscription 16 septembre 2008 Dernière intervention - 16 sept. 2008 à 19:46
0
Merci
J'avais fais exactement ce que tu as decrit dans le premier cas et ca me causer un probleme de chargement. C'etait trop lent a l'execution. Avec la solution que tu m'as proposé c'estia dire chargement les noeuds sur demande(clic) je pense pouvoir resoudre le probleme. c'est la maintenant un probleme d'algo. Grandement merci. J'avais oublié de valider
Capouto
Commenter la réponse de capouto
dadamagouil 141 Messages postés samedi 21 août 2004Date d'inscription 8 juin 2010 Dernière intervention - 11 mars 2009 à 16:36
0
Merci
J'aimerai bien savoir si t'as vraiment rempli manuellement 10'000 nœuds ????

Le savoir ne vaut rien s'il n'est pas partagé
Commenter la réponse de dadamagouil

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.