Les CheckBox dans la listview [Résolu]

Signaler
Messages postés
41
Date d'inscription
lundi 12 février 2007
Statut
Membre
Dernière intervention
2 juin 2010
-
Messages postés
4
Date d'inscription
vendredi 20 mai 2011
Statut
Membre
Dernière intervention
23 septembre 2012
-
Bonjour,

je présente donc mon probléme, j'ai donc ajouter des checkbox dans ma listview en mettant l'attribut listview.CheckBoxes a true, et donc les checkbox apparaissent bien. Le probléme c'est que je voudrai que lorsque je coche ou decoche une des checkbox de ma listview, cela change des valeur dans les colonnes de la ligne selectionner.

Donc y me faudrait une fonction du style: listView_CheckedChanged() ou quelque chose qui me permete de faire ce que je viens d'expliquer

Merci de votre aide.

 

8 réponses

Messages postés
441
Date d'inscription
mardi 2 décembre 2003
Statut
Membre
Dernière intervention
22 mai 2012
7
Salut,


Tu as pour cela l'évènement ItemChecked...

Et tu trouveras l'Item en question dans les arguments de l'évènement : e.Item
Messages postés
441
Date d'inscription
mardi 2 décembre 2003
Statut
Membre
Dernière intervention
22 mai 2012
7
Le plus simple, c'est de te désabonner à ton évènement puis après avoir modifié tes items de te réabonner :

// Se désabonne à l'évènement pour l'empêcher de se déclencher

listView.ItemChecked -= new ItemCheckedEventHandler( listView_ItemChecked );

// Modifie les valeur des cases à cocher
listView.Items[ 0 ].Checked = true;

listView.Items[ 1 ].Checked = false;
...


// Se réabonne à l'évènement
listView.ItemChecked += new ItemCheckedEventHandler( listView_ItemChecked );
Messages postés
441
Date d'inscription
mardi 2 décembre 2003
Statut
Membre
Dernière intervention
22 mai 2012
7
Ou alors, si tu ne modifies tes items qu'au chargement,
tu ne t'abonnes pas à l'évènement à travers l'IDE,
mais seulement par code, après avoir initialisé ton ListView.
Messages postés
441
Date d'inscription
mardi 2 décembre 2003
Statut
Membre
Dernière intervention
22 mai 2012
7
Oui, j'ai bien compris. C'est ce que je disais :

Dans l'évènement OnLoad() de ton formulaire,
Et après avoir rempli ta listview, tu écris :
listView.ItemChecked +=
new
ItemCheckedEventHandler( listView_ItemChecked );

et puis tu rajoutes la méthode :


void
listView_ItemChecked(
object
sender, ItemCheckedEventArgs e )
{
    // Inverse les données des deux premières colonnes
   
string
buffer = e.Item.SubItems[ 1 ].Text;
    e.Item.SubItems[ 1 ].Text = e.Item.Text;
    e.Item.Text = buffer;
}
Messages postés
41
Date d'inscription
lundi 12 février 2007
Statut
Membre
Dernière intervention
2 juin 2010

Saurais-tu comment empecher que cette fonction s'execute lorsque l'on charge la form ou que l'on ajoute un item dans la listview?

Merci de ton aide.
Messages postés
41
Date d'inscription
lundi 12 février 2007
Statut
Membre
Dernière intervention
2 juin 2010

En faite, lorsque je selectionne ou deselectionne une checkbox, jinverse les valeur de deux de mes colonnes et je ne veux pas qu'il me le fasse au chargement de la formou quand la form redevien active.

exemple:      j'ai les colonnes               X                               Z                                   checkbox
                                                      12345                        88888                                   O

quand je coche ma checkbox, j'aimerai que Z= 12345 et que X= 88888 mais seulement quand je coche ou decoche ma checkbox

Merci.
Messages postés
4
Date d'inscription
dimanche 19 mars 2006
Statut
Membre
Dernière intervention
13 août 2010

hello,

Juste un petit passage pour dire merci. Cette exemple m'as permit de regler un soucis que j'avais avec mes checkbox.

Bonne journée.

Ioio
Messages postés
4
Date d'inscription
vendredi 20 mai 2011
Statut
Membre
Dernière intervention
23 septembre 2012

Bonjour,

j'ai mis en place une ListView avec des checkbox. J'ai un bouton commande qui doit lancer une procédure prenant en compte uniquement les éléments cochés dans la listview.

Mon problème : arriver à supprimer de la base de donnees les lignes qui sont cochées dans la listview ...

merci