Listview [Résolu]

drcmomo 182 Messages postés lundi 13 mars 2006Date d'inscription 25 décembre 2009 Dernière intervention - 5 mai 2008 à 10:02 - Dernière réponse : Neo020585 178 Messages postés lundi 10 mars 2003Date d'inscription 6 juillet 2009 Dernière intervention
- 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);
                 }

             }
         }
Afficher la suite 

5 réponses

Répondre au sujet
Neo020585 178 Messages postés lundi 10 mars 2003Date d'inscription 6 juillet 2009 Dernière intervention - 5 mai 2008 à 10:34
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Neo020585
drcmomo 182 Messages postés lundi 13 mars 2006Date d'inscription 25 décembre 2009 Dernière intervention - 5 mai 2008 à 11:02
0
Utile
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;
                }

                  }
          
                }
Commenter la réponse de drcmomo
Neo020585 178 Messages postés lundi 10 mars 2003Date d'inscription 6 juillet 2009 Dernière intervention - 5 mai 2008 à 11:10
0
Utile
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
Commenter la réponse de Neo020585
drcmomo 182 Messages postés lundi 13 mars 2006Date d'inscription 25 décembre 2009 Dernière intervention - 5 mai 2008 à 11:27
0
Utile
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!!!
Commenter la réponse de drcmomo
Neo020585 178 Messages postés lundi 10 mars 2003Date d'inscription 6 juillet 2009 Dernière intervention - 5 mai 2008 à 11:53
0
Utile
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
Commenter la réponse de Neo020585

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.