Recuperer objet d'une listview

Signaler
Messages postés
7
Date d'inscription
mercredi 18 janvier 2012
Statut
Membre
Dernière intervention
17 juin 2012
-
Messages postés
7
Date d'inscription
mercredi 18 janvier 2012
Statut
Membre
Dernière intervention
17 juin 2012
-
Bonsoir a tous,

j'utilise actuellement une Listview que je charge a partir d'une collection d'objet avec un listviewItem. habituellement j'utilise une listbox avec un Datasource sur ma collection et display member et pour recuperer l'objet qui est selectionner j'utilise un cast. exemple (class)cl =(class)Listbox.selectedItem et je recupere mon objet.
Pour revenir à mon probleme, c'est qu'avec une listview je ne sais absolument pas comment effectuer ce procédé et si cela et même possible.

Cordialement

7 réponses

Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
40
Normalement le code ne devrait pas être vraiment différent avec une listview ou une listbox



[i][b]---- Sevyc64 (alias Casy) ----
[hr]# LE PARTAGE EST NOTRE FORCE #/b/i
Messages postés
7
Date d'inscription
mercredi 18 janvier 2012
Statut
Membre
Dernière intervention
17 juin 2012

Malheuresement non, je n'ai pas la la propriété Datasource avec listview mais databindings ce qui n'est pas pareil.
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
40
Ok, d'accord, j'avais lu un peu rapidement et donc pas compris ton problème.

Le contrôle Listview est un contrôle bien plus complexe que la listbox. Il ne peut probablement pas être directement lié à une source de données, c'est pour cela que la propriété n'existe pas.

Le listview fonctionne avec un système d'items et de subitems, je ne suis pas certain que tu puisse y ajouter des objets (faudrait faire des essais). Je pense que tu ne peux ajouter que par exemple le nom de ton objet en item, et certaines de ses propriétés en subitem. Il faudrait garder, je pense, tes objets dans une collection à coté pour pouvoir les récupérer

C'est pas un composant que j'utilise souvent car il n'est pas très souple, je trouve.



[i][b]---- Sevyc64 (alias Casy) ----
[hr]# LE PARTAGE EST NOTRE FORCE #/b/i
Messages postés
7
Date d'inscription
mercredi 18 janvier 2012
Statut
Membre
Dernière intervention
17 juin 2012

Oui exactement il n'est pas trés souple contrairement à la listbox, le seul probleme avec les subitems et que par la suite pour pouvoir les afficher ailleurs il faut que j’insère toutes les propriétés de mon objet dans la listview ce qui n'est pas forcement pratique et qui rendrais ma listview incompréhensible pour l'utilisateur.

Merci pour ta reponse
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
40
Oui, ou comme je disais, n'afficher que certaines propriétés et garder tes objets dans une liste ou collection à coté pour pouvoir venir récupérer l'objet réel à ce qui est sélectionné dans la listview, avec par exemple un système de clé basé sur le hashcode de l'objet


[i][b]---- Sevyc64 (alias Casy) ----
[hr]# LE PARTAGE EST NOTRE FORCE #/b/i
Messages postés
7
Date d'inscription
mercredi 18 janvier 2012
Statut
Membre
Dernière intervention
17 juin 2012

Tu aurais un exemple pour pouvoir récupérer l'objet réel de ce qui est sélectionné dans la listview?
Messages postés
7
Date d'inscription
mercredi 18 janvier 2012
Statut
Membre
Dernière intervention
17 juin 2012

Finalement avec plusiers j'ai trouvé la solution qui me permet de recuperer l'objet avec un Item.tag. pour ce que sa intéresse voici un exemple:

//pour remplir la listview
 listViewStation.Items.Clear();
            int i = 0;
            foreach(object obj in list<objet>)
            {
                // a titre d'exemple
                ListViewItem item = new ListViewItem(new stri{obj.properties,obj.name}); 
                item.Tag = sta;
                listViewStation.Items.Add(item);
                i++;
            }
//et enfin pour le recuperer au click de la listview
  private void listViewStation_MouseClick(object sender, MouseEventArgs e)
        {
            ListView.SelectedListViewItemCollection it = this.listViewStation.SelectedItems;
            foreach (ListViewItem item in it)
            {
                Objet obj = (objet)item.Tag;
                //et on effectue le traitement avec l'objet

            }
        }


Cette solution est fonctionnel :)