La fonction Contains d'un listView renvoi "false" alors qu'un objet identique es

Messages postés
12
Date d'inscription
samedi 19 avril 2003
Statut
Membre
Dernière intervention
15 janvier 2009
- - Dernière réponse : nicokain
Messages postés
12
Date d'inscription
samedi 19 avril 2003
Statut
Membre
Dernière intervention
15 janvier 2009
- 9 oct. 2008 à 14:39
Bonjour,

J'aiun petit soucis avec l'utilisation de la fonction Contains avec un listview. Voici le contexte:

- J'ai 2 listview, l'une contient les valeurs disponibles et l'autre les valeurs ajoutées
- Lorsque je double click sur celle contenant les données disponible, je dois ajouter les infos sélectionnées dans la seconde list view. Par contre je voudrais vérifier avant d'ajouter que la listview de destination ne contient pas déjà les même infos pour ne pas avoir de doublon. pour ceci voici mon code :

private

voidlistViewUserDispo_DoubleClick(
object sender,
EventArgs e)
{

   int local_nb_items_selected = listViewUserDispo.SelectedItems.Count;

   for (
int local_index =
0; local_index < local_nb_items_selected; local_index++)
   {
         //Je clone l'item sélectionné dans la liste (1 item ne peut pas être utilisé dans 2 "endroits" en même temps)

         ListViewItem local_item = (
ListViewItem)listViewUserDispo.SelectedItems[local_index].Clone();

      //je regarde si l'item n'existe pas déjà
      if (listViewUserConcerned.Items.Contains(local_item) ==
false)
            listViewUserConcerned.Items.Add(local_item);

   }
}
Le problème est que j'ai toujours un FALSE en retour du Contains alors que j'ajoute toujours le même objet dans ma première liste. je sais que je pourrais passer en revu tous les items de ma liste en mode texte mais bon je trouvais ça plus cool et surtout moins fastidieu d'utilise un ListViewItem et de le rechercher.

Merci d'avance pour les informations que vous pourrez me fournir.

Nico
Afficher la suite 

3 réponses

Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
41
0
Merci
Salut,

Ta méthode Clone() te retourne une instance différente du ListViewItem cloné, ta ListView ne contient donc pas cette instance. L'appel de la méthode Contains te retourne alors  false.
Mx
MVP C# 
Commenter la réponse de MorpionMx
Messages postés
339
Date d'inscription
dimanche 26 janvier 2003
Statut
Membre
Dernière intervention
25 mars 2009
4
0
Merci
Encore un cas évident ou le cachage des pointeurs ne rend pas service aux développeurs ^^
Commenter la réponse de bubbathemaster
Messages postés
12
Date d'inscription
samedi 19 avril 2003
Statut
Membre
Dernière intervention
15 janvier 2009
0
Merci
Salut à vous,

Je me disais bien que le Clone() me cachait une petite surprise... Merci de vos réponses. J'avais en parallêle monté une fonction de recherche avec le texte.

Ha la la ces pointeurs . je les aime bien^à la pétanque moi les pointeurs

Merci encore.
Commenter la réponse de nicokain