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

C# Discussion :

.net / VS2008 / winForm : ListViewGroup


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert Avatar de Lorenzo77
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    1 472
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 472
    Par défaut .net / VS2008 / winForm : ListViewGroup
    bonjour


    je reviens vers vous avec une autre question ..

    j'ai créé un composant qui permet de lister récursivement un dossier dans le but d'afficher dans un ListView tous les fichiers et dossiers qu'il contient.
    -pour chaque dossier je crée un ListViewGroup
    -chaque ListViewItem représente un fichier, il est lié a son ListViewGroup correspondant (a son dossier)

    j'ai fait quelques tests avec la racine de mon C:\ mais le nombre de fichiers (271778) et dossiers (27411) rend cette opération trés longue ... surtout que pour chaque fichier il faut récupérer son icône (petite/grande), sa taille, les dates ... etc
    donc pour augmenter la vitesse je charge tout d'un coup dans le ListView et je dois dire que ça fonctionne plutôt bien comparé a mes autres tests ...

    il me reste un dernier détail a régler, je connais le nombre de fichiers AVANT de créer le conteneur qui sera assigné a Items, je peut donc le déclarer avec la taille : ListViewItem[] _listItems = new ListViewItem[listeFichiers.Count]
    malheureusement ceci n'est pas valable pour les répertoires puisque je dois faire la boucle (la longue) sur tous les fichiers pour connaitre les différents répertoire.
    le code ressemble a ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    List<ListViewGroup> listGroupTmp = new List<ListViewGroup>();
    foreach( string fichier in listeFichiers ) {
      // des traitements pour récuperer le dossier de chaque fichier
      // le transformer en ListViewGroup
      // et l'ajouter a listGroupTmp 
    }
    donc ne connaissant pas le nombre de répertoire, je ne peux pas déclarer un Array avec une taille fixe :-/
    je dois donc passer par le type List<ListViewGroup> qui est dynamique ... seul problème ne ne peux pas l'assigner a ListView.Groups car il n'accepte que le type ListViewGroup[]
    je dois faire une autre boucle maintenant que je connais le total des dossiers pour le transformer ... un beau gaspillage de ressources
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ListViewGroup[] arrayGroups = new ListViewGroup[listGroupTmp.Count];
    int incGroup = 0;
    foreach( ListViewGroup group in listGroupTmp ) {
       arrayGroups.SetValue(group, incGroup);
       incGroup++;
    }
    listViewFichier.Groups.AddRange(arrayGroups);

    auriez vous une idée pour éviter cette 2éme boucle ?
    en clair : comment convertir un List<ListViewGroup> en ListViewGroup[] ?

    merci

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ListViewGroup[] arrayGroups = listGroupTmp.ToArray();
    Evidemment ça fait aussi une boucle, mais tu n'as pas à la faire toi-même...

  3. #3
    Membre Expert Avatar de Lorenzo77
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    1 472
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 472
    Par défaut
    merci tomlev
    je trouve ca beaucoup + propre que ma version !

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

Discussions similaires

  1. Question existentielle - Différences entre asp.net et winforms
    Par boby62423 dans le forum Général Dotnet
    Réponses: 1
    Dernier message: 16/07/2009, 08h29
  2. Réponses: 1
    Dernier message: 05/10/2008, 14h31
  3. [.NET][C#][WinForms]Comment récupérez-vous les dates?
    Par Floyd dans le forum Windows Forms
    Réponses: 5
    Dernier message: 02/11/2005, 16h16
  4. Compatibilité composant .net Vcl/winform
    Par monmien dans le forum Composants VCL
    Réponses: 1
    Dernier message: 26/05/2005, 07h56

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