Supprimer toute une selcetion d'items dans un ListBox [Résolu]

Signaler
Messages postés
24
Date d'inscription
jeudi 1 juin 2006
Statut
Membre
Dernière intervention
2 octobre 2006
-
Messages postés
24
Date d'inscription
jeudi 1 juin 2006
Statut
Membre
Dernière intervention
2 octobre 2006
-
J'ai créer un bouton afiin de supprimer toutes les ligne de ma ListBox : lb_imgARedim_list.
Rien a faire, il veut bien supprmier une ligne selectionnée mais pas plusieurs, comment faire ?

       private void b_imgARedim_list_delLines_Click(object sender, EventArgs e)
        {
            int count = lb_imgARedim_list.SelectedItems.Count;
            if (count == 1)
            {
                lb_imgARedim_list.Items.Remove(lb_imgARedim_list.SelectedItem);
            }
            else if (count > 1)
            {

                lb_imgARedim_list.Items.Remove(lb_imgARedim_list.SelectedItems);
                /*
                for (int i = 0; i < count ; i++)
                {
                    lb_imgARedim_list.Items.Remove(lb_imgARedim_list.SelectedItems[i]);
                }

            }
        }

7 réponses

Messages postés
24
Date d'inscription
jeudi 1 juin 2006
Statut
Membre
Dernière intervention
2 octobre 2006
5
J'ai trouver la solution !



C'était tout bête !



Lorsque plusieurs éléments etaient selectionnés et que j'en supprimais un, le premier etait supprimé et la selection concervée. Il suffisait de répéter l'action autant de fois qu'il y a d'éléments sélectionnés.





int count = lb_imgARedim_list.SelectedItems.Count;



if (count > 0)



{



    for (int i = 0; i < count; i++)



    {



        lb_imgARedim_list.Items.Remove(lb_imgARedim_list.SelectedItem);



    }



}
Messages postés
339
Date d'inscription
dimanche 26 janvier 2003
Statut
Membre
Dernière intervention
25 mars 2009
5
Ton if(count > 0) est inutile vu que le test est refait dans la boucle if.

De plus, je ne pense pas que cette solution soit la plus propre. Il est courament admis ce code, ou tu recupere d'abord les elements selectionnés, pour ensuite les supprimer préciesemment. :

                ListBox.SelectedIndexCollection indices = lstMaListe.SelectedIndices;
                for (int i = indices.Count - 1; i >= 0; i--)
                {
                    lstMaListe.Items.RemoveAt(indices[i]);
                }
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
54
Salut,
Tu peux jeter un oeil sur ce topic qui devrait t'aider.

<hr size= "2" /> VC# forever
=13319
Messages postés
24
Date d'inscription
jeudi 1 juin 2006
Statut
Membre
Dernière intervention
2 octobre 2006
5
Salut !
Merci pour ton aide ! Je vais faire avec ce que tu propose.
Mais j'ai une question. Tu ne vouloir utiliser ce control que si c'est pour un affichage ou un lecture, j'aimerais savoir ce que tu entends par là et qu'est ce que tu propose.
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
54
Moui, je ne sais pas pourquoi, je ne raffole pas trop de ce Control...
Moi j'utilise des ListView ou des Combo principalement, je trouve qu'ils sont visuellement plus pratique ... Mais bon, si tu as besoin d'une ListBox, utilise une ListBox

<hr size= "2" /> VC# forever
=13319
Messages postés
339
Date d'inscription
dimanche 26 janvier 2003
Statut
Membre
Dernière intervention
25 mars 2009
5
Ton if(count > 0) est inutile vu que le test est refait dans la boucle if.

... Dans la boucle for je voulais dire.
Messages postés
24
Date d'inscription
jeudi 1 juin 2006
Statut
Membre
Dernière intervention
2 octobre 2006
5
Salut !
Merci de ta remarque mais j'ai utilisé une autre alternative avec While.
(j'ai changer ma listbox en listview mais c'est la meme chose)

        while (listView1.SelectedItems.Count > 0)
            {
                    listView1.Items.Remove(listView1.SelectedItems[0]);
            }

Qu'en pense tu ?