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

nicokain Messages postés 12 Date d'inscription samedi 19 avril 2003 Statut Membre Dernière intervention 15 janvier 2009 - 8 oct. 2008 à 15:54
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

3 réponses

MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
8 oct. 2008 à 19:35
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# 
0
bubbathemaster Messages postés 339 Date d'inscription dimanche 26 janvier 2003 Statut Membre Dernière intervention 25 mars 2009 4
9 oct. 2008 à 02:13
Encore un cas évident ou le cachage des pointeurs ne rend pas service aux développeurs ^^
0
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
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.
0
Rejoignez-nous