CheckListBox avec coche unique

Résolu
RockmanX Messages postés 109 Date d'inscription dimanche 23 décembre 2001 Statut Membre Dernière intervention 26 octobre 2007 - 23 sept. 2006 à 12:40
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 - 23 sept. 2006 à 17:44
Salut!
Je cherche à faire en sorte que l'utilisateur ne puisse pas cocher plus d'un seul élément dans une checkboxlist.
J'ai essayé avec les événements mais ça me signale une erreur loop overflow surement parce que le contrôle est en trai d'être mis à jour pendant l'événement et le controle devient donc instable et on ne peut plus acceder à malist.items.count par exemple.
Quelqu'un a déjà fait ça???
Merci d'avance...

13 réponses

MoDDiB Messages postés 546 Date d'inscription mardi 26 novembre 2002 Statut Membre Dernière intervention 4 mai 2007 1
23 sept. 2006 à 14:54
Désolé pour le spam mais je viens de tester et ainsi ca fonctionne niquel :
private void checkedListBox1_ItemCheck(object sender, ItemCheckEventArgs e)
{
if (e.NewValue == CheckState.Unchecked)
return;

if (checkedListBox1.CheckedItems.Count == 1)
checkedListBox1.SetItemChecked(checkedListBox1.CheckedIndices[0], false);



}
3
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 60
23 sept. 2006 à 12:48
Salut,
Dans l'event ItemCheck tu peux mettre quelques chose comme ceci :

if (
this.checkedListBox.CheckedItems.Count >= MAX)
{
   e.NewValue =
CheckState.Unchecked;
}

<hr size="2" />VC# forever
0
RockmanX Messages postés 109 Date d'inscription dimanche 23 décembre 2001 Statut Membre Dernière intervention 26 octobre 2007
23 sept. 2006 à 12:56
ouais mais ça ça empêche que l'élément soit checké.
Moi idéalement je voudrais qu'il uncheck tous ceux qui le sont déjà en fait.
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 60
23 sept. 2006 à 13:09
Tu peux utiliser la méthode SetItemChecked en passant l'indice et false pour décoche un élément...

<hr size="2" />VC# forever
0

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

Posez votre question
RockmanX Messages postés 109 Date d'inscription dimanche 23 décembre 2001 Statut Membre Dernière intervention 26 octobre 2007
23 sept. 2006 à 13:16
marche pas...
c'est a ce moment la que j'ai l'erreur d'overflow...
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 60
23 sept. 2006 à 13:35
Oui c'est normal en fait, car quand tu fais un SetItemChecked, il rappelle l'event ItemCheck => boucle infine.

<hr size="2" />VC# forever
0
MoDDiB Messages postés 546 Date d'inscription mardi 26 novembre 2002 Statut Membre Dernière intervention 4 mai 2007 1
23 sept. 2006 à 14:43
Pour éviter l'erreur d'overflow tu vérifies juste à l'entrée de ta fonction si c'est l'utilisateur qui l'appelle ou ton code...
0
MoDDiB Messages postés 546 Date d'inscription mardi 26 novembre 2002 Statut Membre Dernière intervention 4 mai 2007 1
23 sept. 2006 à 14:51
Désolé j'ai parlé trop vite .. Effectivement c'est un problème intéressant :)
0
RockmanX Messages postés 109 Date d'inscription dimanche 23 décembre 2001 Statut Membre Dernière intervention 26 octobre 2007
23 sept. 2006 à 15:13
Magnifique super!!
Dis-moi, tu sais pas comment on peut faire pour changer la couleur de certains élément de la liste par hasard???
0
MoDDiB Messages postés 546 Date d'inscription mardi 26 novembre 2002 Statut Membre Dernière intervention 4 mai 2007 1
23 sept. 2006 à 15:36
Je ne crois pas que ça soit possible.
Si c'est vraiment nécessaire pour toi je créerais un usercontrol avec une checkbox et une textbox.
Et je créerai un flowlayoutpanel contenant tous ces usercontrols.
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 60
23 sept. 2006 à 16:14
J'ai pas pu répondre plutôt, j'étais pas là ;-)
MoDDiB> Mais non rhôôôô pour ça on utilise un ListView, tout simplement...

<hr size="2" />VC# forever
0
MoDDiB Messages postés 546 Date d'inscription mardi 26 novembre 2002 Statut Membre Dernière intervention 4 mai 2007 1
23 sept. 2006 à 16:53
Dans une listview on peut insérer des checkboxs ?!?
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 60
23 sept. 2006 à 17:44
Evidemment.
Le control est bien plus complet que le CheckedListBox ce qui le rend aussi un peu plus complexe et un peu plus lourd d'utilisation, mais personnellement je le préfère aux CheckedListBox et autre ListBox... Enfin ça dépend toujours des situations bien entendu, mais la plupart du temps un ListView fait l'affaire ;-)

<hr size="2" />VC# forever
0
Rejoignez-nous