Comment autoriser l’utilisateur à effectuer plusieurs vérifications avec CheckedListBox via la touche “Shift”?

Dites que j’ai un CheckedListBox avec les éléments “1”, “2”, “3”, “4” et “5” dans cet ordre et je veux sélectionner “2”, “3” et “4” en sélectionnant “2” puis maintenez la touche Maj enfoncée et sélectionnez “4”. Existe-t-il un moyen intégré d’y parvenir avec le contrôle CheckedListBox? J’ai trouvé un article sur la façon d’utiliser l’événement SelectedIndexChanged pour se rapprocher de ce problème, mais s’il vérifie plusieurs éléments, il ne les affiche pas comme sélectionnés.

http://www.windowsdevelop.com/windows-forms-general/multiple-selection-checkbox-53049.shtml

S’il existe un autre moyen de contrôle que je pourrais utiliser, je serais également partisan.

Il existe peut-être une alternative plus simple, mais vous pouvez utiliser un ListView , définir CheckBoxes sur true , HeaderStyle sur None et View to List .

Correction:

Aurait dû être réglé sur View to Details .

La sélection multiple n’est pas prise en charge, mais je suis arrivé ici par recherche pour trouver les éléments contrôlés.

Les éléments sélectionnés font référence aux éléments marqués, les éléments cochés font référence aux éléments cochés.

D’où utilisation. Propriété CheckedItems au lieu de .SelectedItems si vous souhaitez que les éléments soient cochés.

pour les multichecks je suis venu avec ceci aujourd’hui:

  List listBox2_selectionhistory = new List(); private void checkedListBox2_SelectedIndexChanged(object sender, EventArgs e) { int actualcount = listBox2_selectionhistory.Count; if (actualcount == 1) { if (Control.ModifierKeys == Keys.Shift) { int lastindex = listBox2_selectionhistory[0]; int currentindex = checkedListBox2.SelectedIndex; int upper = Math.Max(lastindex, currentindex) ; int lower = Math.Min(lastindex, currentindex); for (int i = lower; i < upper; i++) { checkedListBox2.SetItemCheckState(i, CheckState.Checked); } } listBox2_selectionhistory.Clear(); listBox2_selectionhistory.Add(checkedListBox2.SelectedIndex); } else { listBox2_selectionhistory.Clear(); listBox2_selectionhistory.Add(checkedListBox2.SelectedIndex); } } 

Pour autant que je sache, SelectionMode ne peut être qu'un ou aucun, ce qui signifie que vous ne pouvez jamais faire en sorte que l'application sélectionne plus d'une application à la fois (j'ai également utilisé ce comportement pour simplifier mon code pour les boîtes à la sélection).

Il semble que la sélection multiple ne soit pas prise en charge pour le contrôle CheckedListBox (voir MSDN ). Il prend en charge plusieurs cases à cocher, mais pas plusieurs éléments sélectionnés (en surbrillance) à la fois.

Je suis d’accord avec l’autre réponse qu’un ListView est probablement le meilleur moyen d’obtenir à la fois des cases à cocher et une sélection multiple.

Il semble qu’il ne soit pas possible de définir la section remarques de la propriété CheckedListBox.SelectionMode.

Pour une alternative plus facile, suivez le conseil de la dérive.

CheckedListBox

  private System.Windows.Forms.CheckedListBox LBO1; ssortingng mySentLst = ssortingng.Join(";", LBO1.CheckedItems.Cast()); 

S’il vous plaît suivez ces étapes:

  • Sélectionnez CheckOnClick = true.

  • Lorsque vous souhaitez récupérer l’élément sélectionné, utilisez plutôt la méthode GetItemChecked(int index) .