Vous pouvez le faire en ajoutant un contrôle d'événement sur CheckedListBox pour la fonction ItemCheck et l'utilisation comme ceci:
private static bool checkIfAllowed(CheckedListBox listBox) {
if (listBox.CheckedItems.Count > 0) {
return false;
}
return true;
}
Ensuite, dans le cas où vous aurait aimé:
if (checkIfAllowed) {
...
} else {
}
De plus vous pouvez améliorer cela en ajoutant une autre fonction/méthode qui désélectionnera tous les éléments avant de permettre la vérification de l'élément. Ainsi, lorsque les utilisateurs cliquent sur une case, toutes les autres cases ne sont pas cochées.
Pour décocher tous les éléments cochés utiliser simplement:
private static void uncheckAll(CheckedListBox listBox) {
IEnumerator myEnumerator;
myEnumerator = listBox.CheckedIndices.GetEnumerator();
int y;
while (myEnumerator.MoveNext() != false) {
y = (int)myEnumerator.Current;
listBox.SetItemChecked(y, false);
}
}
Donc, en cas ItemCheck vous devez exécuter uncheckAll(yourListBox)
d'abord, puis simplement laisser l'élément vérifier.
Edit: Je l'ai testé avec le code ci-dessous et il fonctionne. Sans le si il jette l'exception.
private void checkedListBox1_ItemCheck(object sender, ItemCheckEventArgs e) {
if (e.NewValue == CheckState.Checked) {
IEnumerator myEnumerator;
myEnumerator = checkedListBox1.CheckedIndices.GetEnumerator();
int y;
while (myEnumerator.MoveNext() != false) {
y = (int)myEnumerator.Current;
checkedListBox1.SetItemChecked(y, false);
}
}
}
Pourquoi utiliser une liste déroulante cochée alors. Vous pouvez simplement utiliser une simple liste. –
L'utilisateur a spécifiquement demandé de pouvoir "vérifier" malheureusement. S'il n'y a pas de moyen facile de limiter le nombre d'éléments pouvant être vérifiés en même temps, je vais simplement utiliser une listbox normale comme vous le dites. – AndrewC
Utilisez plutôt un contrôle ComboBox. DropDownStyle = Simple si vous voulez vraiment une liste. –