ListView a affichage progressif

Résolu
MoDDiB Messages postés 546 Date d'inscription mardi 26 novembre 2002 Statut Membre Dernière intervention 4 mai 2007 - 18 janv. 2006 à 10:26
MoDDiB Messages postés 546 Date d'inscription mardi 26 novembre 2002 Statut Membre Dernière intervention 4 mai 2007 - 20 janv. 2006 à 15:03
Bonjour à tous,
Je cherche à créer une visualiseuse d'images.
Toutes les images du dossier courant sont affichées en miniature dans une listview.
Mon problème est qu'en cas de nombre trop important d'images l'attente devient considérable.
Les charger sur un autre Thread donne un scintillement très désagréable et n'est pas très exploitable.
J'ai songé à ne charger qu'un nombre restreint d'images puis de recharger à chaque utilisation de la scrollbar mais je ne
vois pas comment procéder.

J'attends vos suggestions/réponses/codes
et merci d'avance :)

8 réponses

sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
18 janv. 2006 à 13:18
ca fait plaisir comme la recherche du site est utilisée :

http://www.csharpfr.com/fkey.aspx?k=listview

1ère réponse.

Sébastien FERRAND
[MVP Visual C#]
3
Nikoui Messages postés 794 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 19 août 2008 13
18 janv. 2006 à 10:38
J'aurai moi aussi utilisé un thread dédié au chargement... Pourquoi est ce que cela produit un scintillement ? Voila ce que j'aurai fait :
- ta listview est vide
- tu crée le thread qui va parcourir ton dossier et charger les images
- tu abonne ta listview à un évènement de ton thread, par exemple "ImageLoaded"
- a chaque fois que ton thread à lu une image, il déclenche l'évènement (qui possède en paramètre l'image)
- la listview est notifiée, elle ajoute l'image dans ses items.

C'est peut etre comme ca que tu as fais...
Par contre je ne sais pas ce que ca donne, si tu ajoute une image dans la listview alors qu'elle est "ouverte" par l'utilisateur...
0
MoDDiB Messages postés 546 Date d'inscription mardi 26 novembre 2002 Statut Membre Dernière intervention 4 mai 2007 1
18 janv. 2006 à 14:01
J'ai passé mon temps à chercher avant de poster malheureusement le titre de ta source n'est en rien explicite :
comment savoir que le mode virtuel correspondais à mon besoin ?
Je comprends totalement ta réponse mais mets toi à ma place :)

En tout cas très bonne source merci
J'essais dès maintenant !

Sinon pour nikoui, j'ai en gros procédé comme toi et ca fonctionne tel que je l'ai decrit :/
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
18 janv. 2006 à 14:37
pas la peine de s'énerver :)

le titre de la source est fonction du nom de la propriété : VirtualMode.

Sébastien FERRAND
[MVP Visual C#]
0

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

Posez votre question
MoDDiB Messages postés 546 Date d'inscription mardi 26 novembre 2002 Statut Membre Dernière intervention 4 mai 2007 1
18 janv. 2006 à 14:43
Beuh j'étais pas enervé j'ai mis un smiley non mais
0
MoDDiB Messages postés 546 Date d'inscription mardi 26 novembre 2002 Statut Membre Dernière intervention 4 mai 2007 1
18 janv. 2006 à 23:44
Comment gérer l'évement SelectedIndexChanged ?
En effet la liste SelectedItems n'est plus accessible en mode virtuel
0
MoDDiB Messages postés 546 Date d'inscription mardi 26 novembre 2002 Statut Membre Dernière intervention 4 mai 2007 1
18 janv. 2006 à 23:47
Ne jamais programmer trop tard on pose des question à la con !
Pour ceux qui cherche comment faire c'est l'évement VirtualItemsSelectionRangeChanged ..... Oui c'est évident comme nom :)
0
MoDDiB Messages postés 546 Date d'inscription mardi 26 novembre 2002 Statut Membre Dernière intervention 4 mai 2007 1
20 janv. 2006 à 15:03
En fait non l'évenement VirtualItemsSelectionRangeChangedne renvoie que les items affichés
J'aimerai donc savoir comment proceder pour retrouver l'index de l'item sélectionné en mode virtuel
0
Rejoignez-nous