IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Comment rechercher des objets identiques dans une liste de vue? [Débutant]


Sujet :

C#

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2010
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 56
    Points : 23
    Points
    23
    Par défaut Comment rechercher des objets identiques dans une liste de vue?
    Bonjour tout le monde,

    j'essaie sans succès de rechercher des items dans une listview. À l'aide du code ci-dessous, je peux retrouver juste un seul item et le sélectionner.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ListViewItem foundItem = listView1.FindItemWithText(TextboxSuchen.Text,false,0, true);
    if (foundItem != null)
    {
    listView1.SelectedItems.Clear();
    foundItem.BackColor = Color.Plum;
     }
    Toute proposition serait la bienvenue. Merci bien.

  2. #2
    Membre éprouvé
    Avatar de Gurdil le nain
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2009
    Messages
    468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2009
    Messages : 468
    Points : 1 111
    Points
    1 111
    Par défaut
    Bonjour,

    Pourrais tu détailler un petit peu plus ta demande...qu'est ce que tu souhaites faire exactement ? Dans quel but ?

  3. #3
    Membre à l'essai
    Inscrit en
    Mars 2010
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 56
    Points : 23
    Points
    23
    Par défaut
    J'ai par exemple une liste d'objets:

    0 tomate
    1 carotte
    2 Pomme
    3 Pomme
    4 oignon


    J'aimerais lorsque je recherche "pomme" qu'il soit deux fois sélectionné.
    Pour l'instant, je parviens juste à sélectionner le 1er "pomme".
    Merci.

  4. #4
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Comme ceci ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    int startIndex=0 ;
    while (StartIndex>=0)
    {  
      ListViewItem foundItem = listView1.FindItemWithText(TextboxSuchen.Text,false,startIndex, true);
      if (foundItem != null)  
      {
        listView1.SelectedItems.Clear();
        foundItem.BackColor = Color.Plum;
        startIndex=foundItem.Index+1 ;
      }  
      else startIndex=-1 ;
    }
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  5. #5
    Membre à l'essai
    Inscrit en
    Mars 2010
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 56
    Points : 23
    Points
    23
    Par défaut
    Bonjour Graffito,

    merci pour ta proposition mais j'obtiens malheureusement une erreur: ArgumentOutOfRangeException.
    Que dois je faire?

  6. #6
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    while (startIndex>=0 && startIndex<listView1.Items.Count)

    Raah, Erreur dans la doc microsoft
    ArgumentOutOfRangeException : startIndex est inférieur à 0 ou supérieur au nombre d'éléments dans ListView.
    Apparament, c'est "supérieur ou égal".
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  7. #7
    Membre à l'essai
    Inscrit en
    Mars 2010
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 56
    Points : 23
    Points
    23
    Par défaut
    Mon code fonctionne. C'est génial!!!
    Merci!

  8. #8
    Membre à l'essai
    Inscrit en
    Mars 2010
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 56
    Points : 23
    Points
    23
    Par défaut
    Bonjour tout le monde,

    je reviens avec mon problème. Cette fois-ci, je suis confrontée à une difficulté:
    lorsque je clique sur le bouton "chercher" la 1ere foi la sélection (ou la recherche) s'effectue correctement. Lorsque je procéde à une seconde recherche les sélections précedente et actuelle s'effectuent.
    j'ai beau utilisé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    listView1.SelectedItems.Clear();
    Rien n'y fait.

    Ma méthode "Recherche"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    int startIndex=0 ;
    while (startIndex>=0 && startIndex<listView1.Items.Count)
    {  
      ListViewItem foundItem = listView1.FindItemWithText(TextboxSuchen.Text,false,startIndex, true);
      if (foundItem != null)  
      {
        listView1.SelectedItems.Clear();
        foundItem.BackColor = Color.Plum;
        startIndex=foundItem.Index+1 ;
      }  
      else startIndex=-1 ;
    }
    Est ce que quelqu'un aurait une idée? Merci bien

  9. #9
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Avant une nouvelle recherche, il faudrait reinitialiser la BackColor de tous les Items de la ListView...
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  10. #10
    Membre expert
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 210
    Points : 3 015
    Points
    3 015
    Par défaut
    Une question (Ça fait un moment que je n'ai pas fait de Windows Form ):
    Est-ce que faire un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    listView1.SelectedItems.Add(foundItem);
    ne serait pas plus propre que de passer la couleur de l'item pour simuler la sélection ?

    L'appel de la méthode "Clear" a l'air de passer, alors le "Add" devrait fonctionner également, non ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 08/10/2010, 12h42
  2. [XL-2003] Liste des objets dessins dans une feuille Excel
    Par benladder dans le forum Conception
    Réponses: 1
    Dernier message: 09/08/2010, 04h47
  3. [MySQL] Supprimer la répitition des résultats identiques dans une liste déroulante
    Par ghyosmik dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 13/03/2008, 17h33
  4. Réponses: 1
    Dernier message: 13/09/2006, 11h50
  5. Recuperation des objet ole dans une base SQL
    Par TOPGUN89 dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 25/11/2005, 09h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo