Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : ListView et miniature ! [ Archives / Au secours ] (Monico9385)

samedi 1 avril 2006 à 16:14:06 | ListView et miniature !

Monico9385

Bonjour tout le monde,

je viens poster parce que j'ai beau voir toutes les sources possibles sur différents sites, et notamment celui la, j'arrive pas à comprendre et à faire un affichage de miniature dans un listview. Ce que je voudrai, c'est à partir d'un explorateur, afficher en fonction du répertoire sélectionné dans celui ci, afficher toutes les images de ce répertoire sous forme de miniature, mais j'y arrive pas.

Est ce que je dois passer par un controle ImageList en plus du ListView ou non?
Et surtout quel code je dois appliquer par rapport à mon chemin, parce que tout ce que j'essaye en fonction de ce que je récupère ne marche pas, et je commence à désespérer la ...

Si quelqu'un pouvait m'aider, ce serait génial !!!

Merci d'avance

samedi 1 avril 2006 à 16:56:08 | Re : ListView et miniature !

Bidou

Administrateur CodeS-SourceS
Salut,
Oui, il faut construire une ImageList, l'associé au ListView (avec la property SmallImageList / View) puis spécifié l'index de l'image à ajouter lors de l'ajout de l'item à la collection, petit exemple :

ListViewItem itemTitle = new ListViewItem(myString, 0); // 0 c'est l'index de l'image dans l'ImageList
myListView.Items.Add(itemTitle); // Ajout au listView



[Pub]
http://www.csharpfr.com/auteurdetail.aspx?ID=13319 [\Pub]
C# forever

samedi 1 avril 2006 à 18:09:35 | Re : ListView et miniature !

Monico9385

salut,

merci de ton aide. Je suis plus tres loin maintenant car en fait ca liste bien, mais ca n'affiche pas sous formes de miniatures mais juste le chemin du fichier.

voila mon code, qu'est ce que je pourrai rajouter pour afficher les miniatures :)

private void treeView1_AfterSelect(object sender, System.Windows.Forms.TreeViewEventArgs e)
        {
            int i;
           
            ImageList imageListSmall = new ImageList();

            String[] photos = Directory.GetFiles(treeView1.SelectedNode.FullPath);
            FileInfo infosFichier;

            this.listViewPhoto.Items.Clear();
            try
            {
                for (i = 0; i < photos.Length; i++)
                {
                    infosFichier = new FileInfo(photos[i]);
                   
                    if ((infosFichier.Extension == "bmp") || (infosFichier.Extension == "jpg")|| (infosFichier.Extension == "jpeg"))
                        continue;
                    ListViewItem itemTitle = new ListViewItem(photos, 0); // 0 c'est l'index de l'image dans l'ImageList
                    listViewPhoto.Items.Add(itemTitle); // Ajout au listView

                    //listViewPhoto.Images.Add(Bitmap.FromFile(photos[i]));//Bitmap.FromFile(photos[i])
                    //listViewPhoto.SmallImageList = imageListSmall;
                }
            }
            catch {}

        }




samedi 1 avril 2006 à 18:25:26 | Re : ListView et miniature !

Bidou

Administrateur CodeS-SourceS
Tu dois ajouter les images dans l'ImageList!
Actuellement, ton object imageListSmall est vide. Si mes souvenirs sont bons, c'est quelques chose comme ca:

imageListSmall.Images.Add(...); // Ajoute-en combien tu veux

Puis assigner ton object ImageList à la propriété SmallImageList du ListView une fois qu'il est remplit.



[Pub]
http://www.csharpfr.com/auteurdetail.aspx?ID=13319 [\Pub]
C# forever

samedi 1 avril 2006 à 18:52:40 | Re : ListView et miniature !

Monico9385


j'ai fait ca mais ca ne marche pas

private void treeView1_AfterSelect(object sender, System.Windows.Forms.TreeViewEventArgs e)
        {
            int i;
           
            ImageList imageListSmall = new ImageList();

            String[] photos = Directory.GetFiles(treeView1.SelectedNode.FullPath);
            FileInfo infosFichier;

            this.listViewPhoto.Items.Clear();
            try
            {
                for (i = 0; i < photos.Length; i++)
                {
                    infosFichier = new FileInfo(photos[i]);
                   
                    if ((infosFichier.Extension == "bmp") || (infosFichier.Extension == "jpg")|| (infosFichier.Extension == "jpeg"))
                        continue;
                    ListViewItem itemTitle = new ListViewItem(photos, 0); // 0 c'est l'index de l'image dans l'ImageList
                    listViewPhoto.Items.Add(itemTitle); // Ajout au listView
                    imageListSmall.Images.Add(Bitmap.FromFile(photos[i]));
                    listViewPhoto.SmallImageList = imageListSmall;

                }
            }
            catch {}

        }


encore un ptit peu d'aide

samedi 1 avril 2006 à 19:36:02 | Re : ListView et miniature !

Bidou

Administrateur CodeS-SourceS
Pourquoi tu fais ça dans une boucle?

1) Créer un listView.
2) Créer une ImageList et remplit la
3) Créer tes listViewItem en fonction de ton ImageList (en insérant l'index de l'image à insérer)
4) Ajoute le ListViewItem à la collection des ListViewItem du ListView

En gros :

ListView lv = new ListView (généré par le designer... )
ImageList il = new ImageList (éventuellement généré par le designer)
foreach(string s in photos) il.Images.Add(Bitmap.FromFile(s)); // Remplit l'ImageList avec tes images

Maintenant le for pour remplir les éléments
for(...i....)
{
ListViewItem itemTitle = new ListViewItem("text", i)
listViewPhoto.Items.Add(itemTitle);
}

listViewPhoto.SmallImageList = il;
listViewPhoto.View = View.SmallIcon;

Voilà en gros ce qu'il faut faire (de tête).
Et je ne comprend pas pourquoi tu fais un if avec le type des images?



[Pub] http://www

samedi 1 avril 2006 à 20:31:05 | Re : ListView et miniature !

Monico9385

Je comprend pas la, j'ai repris ce que tu m'as donné, mais ca marche pas. J'ai pas d'erreur au niveau de la compilation, mais quand j'execute, ca me met une erreuur sur ce qu'il y a dans le foreach : une erreur de mémoire :(

J'ai fait ca pourtant :

private void treeView1_AfterSelect(object sender, System.Windows.Forms.TreeViewEventArgs e)
        {
            int i;
            String[] photos = Directory.GetFiles(treeView1.SelectedNode.FullPath);

            ListView lv = new ListView();
            ImageList il = new ImageList();
            foreach(string s in photos)
            {
                il.Images.Add(Bitmap.FromFile(s)); // Remplit l'ImageList avec tes images
            }

            for (i = 0; i < photos.Length; i++)
                {
                    ListViewItem itemTitle = new ListViewItem("text", i);
                    listViewPhoto.Items.Add(itemTitle);
                }

            listViewPhoto.SmallImageList = il;
            listViewPhoto.View = View.SmallIcon;

        }


Sinon je faisais un if sur les extensions, car j'avais recupérer un code qui faisait comme ca, mais si y a pas besoin, je le met pas :)

Désolé de te demander tout ca, mais je suis débutant, et j'ai un peu de mal à comprendre tout. Mais je suis sur que la solution n'est pas tres loin... Je cherche en meme temps :)


samedi 1 avril 2006 à 21:46:22 | Re : ListView et miniature !

Bidou

Administrateur CodeS-SourceS
Un conseil, pour l'instant oublie ton TreeView et concentre-toi seulement sur le ListView (oublie donc ton event AfterSelect).

Créer une nouvelle form dans ton projet.
Ajoute avec le designer un ListView (mets la propriété View à SmallImageList) et appelle le listViewPhoto.
Maintenant, avec le designer encore, ajoute une ImageList, et avec le designer toujours, ajoute des images dedans (pour l'instant, tu dois avoir écris aucun code) [Tu appelles l'imageList imgList].
Maintenant, avec le designer encore, tu mets la proprieté SmallImageList de ton ListView à la valeur de ton ImageList (il détecte automatiquement que tu as construit une ImageList). J'espère que tu me suis.

Ok, maintenant, dans le Load de ta form, tu écris ceci :

for(int i=0; i<imgList.Images.Count; i++)
{
    ListViewItem itemTitle = new ListViewItem("MonText", i);
    listViewPhoto.Items.Add(itemTitle);
}

listViewPhoto.SmallImageList = imgList;

Voilà, c'est tout, maintenant ça fonctionne.
Regarde le code qui a été généré par le designer et adapte le pour faire ce que tu as besoin avec ton treeView!
Capito ?



[Pub]
http://www.csharpfr.com/auteurdetail.aspx?ID=13319 [\Pub]
C# forever

dimanche 2 avril 2006 à 12:22:33 | Re : ListView et miniature !

Monico9385

Oui j'ai bien compris !!! j'ai donc fait tout ce que tu m'as dit, ca marche parfaitement, sauf que dans le code généré y a rien qui reprend l'insertion des images dans l'imageList. j'ai juste ca :

this.imgList.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imgList.ImageStream")));

mais rien qui indique le chemin des images, ou meme l'insertion :( c'est normal?



dimanche 2 avril 2006 à 12:35:40 | Re : ListView et miniature !

Bidou

Administrateur CodeS-SourceS

Oui oui c'est normal ;-)
Quand tu fais cela avec le designer, les images sont insérées statiquement en tant que resources, et la ligne que tu as postées ci-dessus va justement rechercher ces images dans les resources !
Si tu dois les insérer dynamiquement, tu dois faire comme je t'ai expliqué au début :

// pathCol est ton tableau qui contient les chemins vers les images
// C'est un tableau de string (string[])
foreach(string str in pathCol)
{
     imgList.Images.Add(
Image
.FromFile(str));
}




[Pub]
http://www.csharpfr.com/auteurdetail.aspx?ID=13319 [\Pub]
C# forever


1 2

Cette discussion est classé dans : fonction, arrive, afficher, listview, miniature


Répondre à ce message

Sujets en rapport avec ce message

[c#]printpreviewdialog [ par stiley1 ] slut j'arrive à afficher l'aperçu mais je possède un bouton suivant . Donc une fois ke je ferme la fenêtre d'aperçu et ke je fais suivant je n'arrive Afficher des images dans les subitems d'un listview [ par Fildomen ] SalutJe dois obligatoirement afficher une image dans un subitem d'un listview, mais je trouve pas comment, ya une astuce pour le faire mais avec la li Afficher une ligne d'un Datagrid [ par FRH ] Bonjour,J'ai un problème d'apparence tout bête mais que je n'arrive pas à résoudre.J'ai un datagrid lié à une base de données dans lequel j'ajoute des Listview modifié [ par fhau ] Bonjour,Je suis actuellement en train de développer une application pour le domaine automobile en C# 2005.Je souhaite pouvoir afficher mes données que afficher une popup sur evenement systray [ par loudo21 ] Bonjour.J'aimerai afficher une popup des que la souris passe sur l'icone du systray. Le probleme est qu'il n'y a pas de fonction On mouse Over pour le donner la main à l'utilisateur d'afficher dans listview les infomations qu'il désir [ par kobeyoussef ] salut tout le monde,    pour résumer j'ai une application de gestion en c#,bon il m'y ai demandé de donner la main à l'utilisateur la main à l'utilisa Sérialization d'un listview [ par Inxday2005 ] Bonjour,J'essaye de faire une 'sauvegarde' du contenu d'un listView au moyen d'une 'xmlSerialization' ...Mais j'y arrive pas ... Quelqu'un d'entre vou Afficher des photos dans une ListView [ par LeGnuff ] Bonjour j'aimerais afficher des photos dans une listviewj'ai réussi à afficher des images carrées mais le pb c'est que j'arrive pas à faire en sorte q ListView [ par thebigboss ] Bonjour,je suis en train de me faire un petit Client-Serveur (un de plus). Pour afficher les messages d'une couleur différente selon qu'il s'agisse d' LISTVIEW Selection Supression Incrementation [ par Mentalalex ] Bonjour,J'ai un petit soucis avec une listView, en effet, j'aimerais effectuer une vérification pour svoir si un (ou plusieurs) elements sont selectio


Nos sponsors

Sondage...

CalendriCode

Octobre 2008
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,59 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.