Replir une listvieuw rapidement et efficacement

VladDracula Messages postés 10 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 12 juin 2009 - 7 juin 2009 à 13:43
VladDracula Messages postés 10 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 12 juin 2009 - 12 juin 2009 à 18:22
Bonjour,

je voudrais savoir qu'elle est la meilleur solution pour remplir une listview ?

Je m'explique : j'ai 3 colonnes (ID, nom, level ) et j'ai a ma disposition un fichier texte où chaque ligne est de la forme
"ID,Nom,Level" (j'utilise un streamreader et je slip chaque ligne sur le caractere ',' ). Je souhaiterais intégrer directement à mon projet (ie que je n'ai plus le fichier .txt mais seulement le .exe), et qu'au démarrage la listvieuw soit déjà remplie. Pour sa j'ai fait un switch sur l'id et une simple boucle for, mais mon probleme est celui de la vitesse. En effet pour le moment en cachant la listvieuw et en la remplissant, j'en ai pour environ 15 sec ( pour 25000 items :p ), je voudrais que ca soit un peu plus rapide (4-5sec)

Donc je voudrais savoir comment remplir un listview rapidement et éfficacement , ou tout autre type de base de donné (genre hashtable ou dictonnary).

Apres je voudrais pouvoir aussi lancer une recherche sur le nom de l'objet. Pour le moment je fais sa a la bourrin, je regarde tt les listeviewitem de ma listview et si son nom n'est pas le mm, je le supprime ... mais la sa prend une bonne minute :s

Merci :)

7 réponses

rours Messages postés 61 Date d'inscription dimanche 5 novembre 2000 Statut Membre Dernière intervention 24 février 2010
8 juin 2009 à 13:46
"Pour sa j'ai fait un switch sur l'id et une simple boucle for,"

Tu peux montrer le code de ça ?
0
rours Messages postés 61 Date d'inscription dimanche 5 novembre 2000 Statut Membre Dernière intervention 24 février 2010
8 juin 2009 à 13:49
ah ui et j'oubliais pour la derniere question, dans la doc on peut lire ça : "
Souvent, lorsque vous utilisez une longue liste d'éléments dans un contrôle <?XML:NAMESPACE PREFIX MSHelp NS "http://msdn.microsoft.com/mshelp" /??><mshelp:link tabindex="0" keywords="T:System.Windows.Forms.ListView">ListView</mshelp:link>, vous souhaitez offrir des fonctions de recherche à l'utilisateur. Le contrôle <mshelp:link tabindex="0" keywords="T:System.Windows.Forms.ListView">ListView</mshelp:link> offre cette fonction de deux façons différentes : par correspondance de texte et par recherche d'emplacement.

La méthode <mshelp:link tabindex="0" keywords="Overload:System.Windows.Forms.ListView.FindItemWithText">FindItemWithText</mshelp:link> vous permet d'effectuer une recherche de texte sur un <mshelp:link tabindex="0" keywords="T:System.Windows.Forms.ListView">ListView</mshelp:link> dans une vue Liste ou en mode Détails, à l'aide d'une chaîne de recherche et d'un index de début et de fin facultatif. En revanche, la méthode <mshelp:link tabindex="0" keywords="Overload:System.Windows.Forms.ListView.FindNearestItem">FindNearestItem</mshelp:link> vous permet de rechercher un élément dans un <mshelp:link tabindex="0" keywords="T:System.Windows.Forms.ListView">ListView</mshelp:link> dans une vue Icônes ou dans un affichage en mosaïque, à l'aide d'un jeu de coordonnées x- et y- et un sens de la recherche."
0
cs_MoH008 Messages postés 238 Date d'inscription lundi 2 mars 2009 Statut Membre Dernière intervention 29 septembre 2011 1
8 juin 2009 à 14:52
Salut,
Ta listview a une taille qui te permet de voir un nombre limité de lignes au départ (disons 20 lignes par ex). Tu pourrais afficher ta listview après disons avoir rempli peut être 1000 lignes si ça ne prend pas trop de temps et tu continues de charger ta listview avec les autres éléments

The possible meet the impossible to become the possimpible !!
0
rours Messages postés 61 Date d'inscription dimanche 5 novembre 2000 Statut Membre Dernière intervention 24 février 2010
8 juin 2009 à 15:26
oui mais il veut juste la remplir rapidement, il ne l'affiche pas (enfin c'est pas dans le texte en tout cas).
 En gros il lance son prog. Ca charge la list view (pour un traitement ultérieur sans doute) mais c est trop long.  Enfin j'ai peut etre mal compris.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_MoH008 Messages postés 238 Date d'inscription lundi 2 mars 2009 Statut Membre Dernière intervention 29 septembre 2011 1
8 juin 2009 à 16:34
S'il ne veut pas l'afficher alors pourquoi utilier une listview ??

The possible meet the impossible to become the possimpible !!
0
rours Messages postés 61 Date d'inscription dimanche 5 novembre 2000 Statut Membre Dernière intervention 24 février 2010
8 juin 2009 à 16:44
"En effet pour le moment en cachant la listvieuw et en la remplissant, j'en ai pour environ 15 sec"

ça je sais pas moi, il fait ce qu'il veut :D  
0
VladDracula Messages postés 10 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 12 juin 2009
12 juin 2009 à 18:22
Merci d'avoir répondu, et désolé de ne l'avoir pas fait mais je n'avais pas internet de la semaine :s

Les ligne de ma listevieux contienne le nom d'objet ( pour un mmorpg ) et sont de la forme :

ID | Nom | Level de l'ojet

j'ai un fichier text dont chaque ligne est de la forme :

"ID","Name,"Level"

Pour le moment j'ai mon programme et le fichier text séparé, et lorsque je lance mon programme je crée un streamreader, lit chaque ligne, puis l'ajoute a ma listvieuw. Cela prend pas mal de tps ( comme je l'ai dit 25000 objets ). Alors je voulais savoir qu'elles étaient les autres moyens pour remplir ma listvieuw, plus rapidement et si possible sans avoir le fichier text a me balader.

( pour le code j'vous mes ca demain j'ai pas mon portbale avec moi ^^)
0
Rejoignez-nous