ListView et checkbox, contrainte de sélection

Résolu
cs_vagg Messages postés 102 Date d'inscription vendredi 13 juin 2008 Statut Membre Dernière intervention 24 janvier 2013 - 19 janv. 2009 à 12:11
cs_vagg Messages postés 102 Date d'inscription vendredi 13 juin 2008 Statut Membre Dernière intervention 24 janvier 2013 - 19 janv. 2009 à 15:03
Bonjour à tous,

J'ai actuellement une ListView en mode Détails !
dans cette ListView j'ai plusieurs objets qui sont cochable par des Checkbox, parcontre j'aimerais que l'utilisateur ne puisse cocher qu'une seule chexkbox!
Si il en coche une puis une deuxième, la première se décoche automatiquement!

j'ai bien essayé avec une procédure mais j'ai pas vraiment réussit!

Si quelqu'un avait une petite idée ou une piste pour m'éclairer merci de me la faire partager!

Merci.

2 réponses

billou_13 Messages postés 860 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 19 août 2014 29
19 janv. 2009 à 13:48
Bonjour,

Il te suffit pour cela d'enregistrer l'événement ItemCheck de ta CheckedListBox et d'implémenter le code suivant:

private void checkedListBox1_ItemCheck(object sender, ItemCheckEventArgs e)
{
            if (e.NewValue != CheckState.Checked)
                return;

            for (int i = 0; i < checkedListBox1.Items.Count; i++)
            {
                if (i != e.Index)
                {
                    checkedListBox1.SetItemChecked(i, false);
                }
            }
}

Bonne journée,

Billou_13
Bask En Force

--------------------------------------------------------------------
Connaître la réponse est une chose, savoir pourquoi en est une autre
---------------------
3
cs_vagg Messages postés 102 Date d'inscription vendredi 13 juin 2008 Statut Membre Dernière intervention 24 janvier 2013
19 janv. 2009 à 15:03
Merci beaucoup billou_13,

J'ai dû changer un petit truc pour l'adapter à ma ListView, donc je met le code final pour ceux qui serait intéressé!

private void listView1_ItemCheck(object sender, ItemCheckEventArgs e)
        {
            if (e.NewValue != CheckState.Checked)
                return;

            for (int i = 0; i < listView1.Items.Count; i++)
            {
                if (i != e.Index)
                {
                    listView1.Items[i].Checked = false;
                }
            }           
        }

Voilà, Merci encore!!
3
Rejoignez-nous