Listview

Résolu
drcmomo Messages postés 182 Date d'inscription lundi 13 mars 2006 Statut Membre Dernière intervention 25 décembre 2009 - 5 mai 2008 à 10:02
Neo020585 Messages postés 178 Date d'inscription lundi 10 mars 2003 Statut Membre Dernière intervention 6 juillet 2009 - 5 mai 2008 à 11:53
Bonjour tout le monde ,

J'ai une listview avec des checkBoxe, je voudrais utiliser qu'un bouton pour selectionner et deselectionner tous les elements de la liste.
J'ecris ce petit bout code(voir ci-dessous) ça marche dans un seul cas , cas ou il faut tout selectionner. Je voudrais savoir si possible et  comment faire si tout les elements sont deja selectionner pour tout deselectionner(avec le même bouton)?
Merci d'avance
SelectAll = = true;
private void btnselectionnerDeselectionner_Click(object sender, EventArgs e)
         {
             if (SelectAll = = false)
             {
                 for (int IntNoLigne = 0; IntNoLigne < this.LstChkServices.Items.Count; IntNoLigne++)
                 {
                     LstChkServices.SetItemChecked(IntNoLigne, true);
                 }
             
             }
            else
             {
                 for (int IntNoLigne = 0; IntNoLigne < this.LstChkServices.Items.Count; IntNoLigne++)
                 {
                     LstChkServices.SetItemChecked(IntNoLigne, false);
                 }

             }
         }

5 réponses

Neo020585 Messages postés 178 Date d'inscription lundi 10 mars 2003 Statut Membre Dernière intervention 6 juillet 2009 4
5 mai 2008 à 10:34
Bonjour,

Si j'ai bien compris, voilà ce que ça pourrait donner :

bool selectAll = true;

private void btnselectionnerDeselectionner_Click(object sender, EventArgs e)
{
    foreach (ListViewItem lvi in listView1.Items)
    {
       if(!selectAll)
        {
            lvi.Checked = true;
            selectAll = true;
        }
        else
        {
             lvi.Checked = false;
             selectAll = false;
        }
    }
}

Normalement, cela devrait répondre à ta question...
"Une chose me laisse perplexe : Est-ce moi ou les autres qui sont fous ?" A. Einstein
3
drcmomo Messages postés 182 Date d'inscription lundi 13 mars 2006 Statut Membre Dernière intervention 25 décembre 2009
5 mai 2008 à 11:02
Salut !!

Merci infiniment, je me suis inspirer de ton code pour modifier le mien
Voila le resulat et ça marche

bool SelectAll = true ;

private void btnselectionner_Click(object sender, EventArgs e)
         {
             if (!SelectAll)
             {
                 for (int IntNoLigne = 0; IntNoLigne < this.LstChkServices.Items.Count; IntNoLigne++)
                {
                     LstChkServices.SetItemChecked(IntNoLigne, true);
                     SelectAll = true;
                 }
             
             }
             else{
           
                 for (int IntNoLigne = 0; IntNoLigne < this.LstChkServices.Items.Count; IntNoLigne++)
                {
                     LstChkServices.SetItemChecked(IntNoLigne, false);
                   SelectAll = false;
                }

                  }
          
                }
0
Neo020585 Messages postés 178 Date d'inscription lundi 10 mars 2003 Statut Membre Dernière intervention 6 juillet 2009 4
5 mai 2008 à 11:10
Bonjour,

Mon code est une version simplifiée du tiens !
Je ne comprends pas pourquoi tu parcours tes items avec un for alors que la propriété Items de la ListView revoit une collection dans laquelle il devient aisé de se déplacer (via l'utilisation d'un foreach) !
Moins de lignes de code, c'est moins de lignes à debugger en cas de problème...

Enfin, tu fais comme tu le sent, si tu préfère ta méthode et qu'elle fonctionne, tant mieux car c'était le but. Je ne fais que te montrer une voie alternative...

Par contre, penses à valider l'une des réponses du sujet afin de le tagger en tant que résolu.

"Une chose me laisse perplexe : Est-ce moi ou les autres qui sont fous ?" A. Einstein
0
drcmomo Messages postés 182 Date d'inscription lundi 13 mars 2006 Statut Membre Dernière intervention 25 décembre 2009
5 mai 2008 à 11:27
Oui , tu as raison mais le probléme avac ta source j'ai le message d'erreur suivant :
Impossible d'effectuer un cast d'un objet de type 'System.String' en type 'System.Windows.Forms.ListViewItem'.
Qui vient de ListViewItem lv1
Le tiens est plus simple j'avoue.
Merci encore!!!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Neo020585 Messages postés 178 Date d'inscription lundi 10 mars 2003 Statut Membre Dernière intervention 6 juillet 2009 4
5 mai 2008 à 11:53
Bonjour,

Un ListViewItem et un élément (item) de ta ListView, il représente une ligne entière (en plusieurs colonnes si ta ListView en est composée).

<hr size="2" width="100%" />ListViewItem lvi;

lvi.SubItems[0].Text // valeur de la première colonne de l'item représenté par lvi, équivaut aussi à lvi.Text
lvi.SubItems[1].Text // valeur de la deuxième colonne de l'item représenté par lvi
lvi.SubItems[2].Text // valeur de la troisième colonne de l'item représenté par lvi
<hr size="2" width="100%" />
Donc tu peux facilement y accéder.

De même, si tu stocke des informations dans la propriété Tag de ton Item, tu peux y accéder facilement avec lvi.Tag.

Je n'utilise plus que cette méthode pour parcourir mes ListView !

"Une chose me laisse perplexe : Est-ce moi ou les autres qui sont fous ?" A. Einstein
0
Rejoignez-nous