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

Windows Forms Discussion :

TreeView et Affichage


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 5
    Par défaut TreeView et Affichage
    Slt!
    J'ai crée un programme qui semble à explorateur des fichiers mais loin de l'être,mon problème c'est que lorsque je charge un répertoire assez volumineux dans le treeview, l'affichage sera trop lent, et l'application plante, je ne sais pas pourquoi.J'ai besoin d'aide si quelqu'un sait déja comment on procède pour que l'affichage soit assez rapide.
    J'ai utilisé DirectoryInfo pour récupérer les informations sur le répertoire et je l'ai stocké dans la propriété Tag d'un TreeNode pour l'information de ce noeud.
    Merci d'avance..........
    A l'aide................

  2. #2
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Par défaut
    Utilise un backgroundworker pour charger les noeuds du treeview et les méthodes BeginUpdate et EndUpdate pour améliorer les performances.
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  3. #3
    Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 5
    Par défaut
    Slt, c'est encore moi (_VAZ__)
    J'ai testé le BackgroundWorker, j'ai mis mon code dans xx_Dowork(), dans ce code, j'ai ajouter directement les noeuds du controle TreeView. l'extrait du code est du genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    TreeNode root = new TreeNode(@"XXX_PATH_XXX");
                root.Name = @"XXX_PATH_XXX";
                root.ImageKey = "armoire";
                DirectoryInfo dInfo = new DirectoryInfo(@"XXX_PATH_XXX");
                root.Tag = dInfo;
                treeView1.Nodes.Add(root);
                Explore(root);    
                treeView1.SelectedImageKey = "root";
    lorsque j'exécute l'application, une exception est survenue au niveau de ligne: treeView1.Nodes.Add(root);

    InvalideOperationException
    "Action being performed on this control is being called from the wrong thread. Marshal to the correct thread using Control.Invoke or Control.BeginInvoke to perform this action."
    Je pense que c'est un problème entre le thread principal et le thread utilisé par le BackgroundWorker, j'ai déja rencontré ce genre de problème mais pas avec BackgroundWorker et j'ai pas encore trouvé une solution.

    Pouvez-vous me faire quelques choses pour resoudre mon probème?
    Merci d'avance!......

  4. #4
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Par défaut
    salut

    je ne sais pas comment tu geres tes noeuds au niveau de ton treeview mais
    perso, quand j'avais fait l'équivalent d'un explorer, j'avais opté pour la politique suivante :

    Sur clique sur un noeud, je ne balaye que les infos du niveau -1... ce qui
    evite de faire de la récursivité sur le contenu des repertoires présents dans ton répertoire

    En procedant ainsi, je vais plutot vite.. et en fait, mon treeview grossi au fur à mesure que j'étends des repertoires.. par contre, je ne supprime jamais quand je referme un dossier... comme cela, au fur et à mesure que j'étends des dossiers, j'ai sois besoin de remplir les noeuds fils soit rien faire et ainsi, j'arrive à avoir
    un comportement efficace et rapide...

    J'espère avoir été clair

    The Monz, Toulouse

  5. #5
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    Peut-être en encadrant les modifs du treeview par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    MyTreeView.SuspendLayOut() ;
    ...
    MyTreeView.resumeLayOut() ;

Discussions similaires

  1. TreeView en affichage horizontal
    Par hokidoki dans le forum Windows Presentation Foundation
    Réponses: 1
    Dernier message: 04/04/2013, 16h35
  2. Treeview et affichage de contenu de table
    Par NorexaMS dans le forum Composants VCL
    Réponses: 2
    Dernier message: 15/05/2010, 14h14
  3. Réponses: 2
    Dernier message: 18/07/2006, 10h29
  4. [C#] TreeView : affichage des classes -> MetaViewer
    Par kerbage dans le forum Windows Forms
    Réponses: 3
    Dernier message: 19/05/2006, 14h19
  5. [C#]affichage d'un treeview du premier coup
    Par fafa139 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 25/04/2006, 17h27

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