IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Dotnet Discussion :

[WinForms]Optimisation - TreeView


Sujet :

Dotnet

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mars 2002
    Messages
    118
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 118
    Par défaut [WinForms]Optimisation - TreeView
    Bonjour !

    Tout d’abord, merci de lire ce message et de bien vouloir m’aider. Voici mon questionnement. Dans une application WinForm avec .NET 2.0, j’ai un composant visuel de type TreeView.

    Mais voilà, j’aimerais beaucoup optimiser cet arbre qui devient particulièrement lent une fois que j’ai atteint un certain nombre de nœuds.

    J’ai pensé que je pourrais en un premier temps charger le TreeView des nœuds de premier niveau et comme suite à un clique sur un de ces noeuds, je procéderais au chargement des éléments sous ce nœuds.

    Une de mes interrogation est à savoir comment je fais afficher la petite icône « + » à côté d’un nœud qui n’a ôté d’un nœud qui n’a pas encore de sous-élément.

    Quelqu’un a déjà essayé ce genre de stratégie ? Quelqu’un a de l’expérience avec le chargement d’arbre…

    Merci beaucoup de votre aide !

    Martin

  2. #2
    Membre Expert Avatar de LaChips
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    1 109
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 109
    Par défaut
    J'ai peu être un semblant d'idée pour l'optimiser
    quand tu charges tes noeuds fait en sorte que ton TreeView soit complétement réduit (CollapseAll)
    puis tu fais le Refresh du treeview

  3. #3
    Membre éprouvé Avatar de graphicsxp
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    758
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Luxembourg

    Informations forums :
    Inscription : Avril 2004
    Messages : 758
    Par défaut
    Salut,
    Perso j'avais eu le meme souci que toi, et je l'ai résolu en utilisant la méthode que tu décris. Le fait que les nodes n'ont pas le petit + avant que l'on clique dessus n'est pas vraiment dérangeant. Et au vu du gain de ressources gagnées ca vaut le coup !

  4. #4
    Membre confirmé
    Inscrit en
    Mars 2002
    Messages
    118
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 118
    Par défaut
    En effet, je crois que c'est le meilleure solution (i.e. charger les sous-noeuds à la demande). Mais comme l'application que je développe doit-être très "user friendly", il me faut les petits plus et c'est cela qui m'embête au plus haut point...

    Personne a un exemple de code ou quoique ce soit... ?

    Merci !

  5. #5
    Membre éprouvé
    Inscrit en
    Juillet 2005
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 83
    Par défaut
    Tu trouveras quelques conseils à ce sujet (entre autres) dans cet article.

  6. #6
    JEG
    JEG est déconnecté
    Membre chevronné
    Avatar de JEG
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 211
    Par défaut
    déjà, as-tu utilisé les méthodes beginUpdate() et les endUpdate().

    Dans la négative, il faut absolument que tu commences par ca.

  7. #7
    Membre éprouvé Avatar de graphicsxp
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    758
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Luxembourg

    Informations forums :
    Inscription : Avril 2004
    Messages : 758
    Par défaut
    Les methodes BeginUpdate et EndUpdate sont en effet importantes pour le bon raffraichissement du Treeview et pour des performances optimales. Cependant lorsque le nombre de Nodes atteint plusieurs centaines, là il faut passer a l'étape supérieure. Et la meilleure facon ici c'est de faire comme il le fait, de ne pas charger les nodes enfants si ce n'est pas necessaire.
    Pour revenir a ton probleme j'ai une solution un peu a l'arrache mais qui fonctionne:
    Tu rajoutes un node bidon aux nodes qui sont censés avoir des child nodes, mais ou ces derniers n'ont pas encore été chargés. Au moment ou tu fais un expand du node, tu vires le node ajouté et tu montres les child nodes
    @+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] optimiser treeview et listview
    Par bamsen dans le forum VB.NET
    Réponses: 0
    Dernier message: 24/07/2013, 09h45
  2. mysql / treeview optimisation
    Par thinx dans le forum Accès aux données
    Réponses: 0
    Dernier message: 10/08/2009, 10h33
  3. Optimisation TreeView avec XML
    Par tmryuga dans le forum Composants VCL
    Réponses: 3
    Dernier message: 19/11/2007, 14h27
  4. [WinForm] TreeView avec checkbox grisée
    Par Thor Tillas dans le forum Visual C++
    Réponses: 2
    Dernier message: 22/03/2007, 13h27
  5. [winforms] probleme de treeview
    Par yannnomad dans le forum Windows
    Réponses: 1
    Dernier message: 23/01/2007, 22h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo