CheckedListBox, позволяющий проверять только один элемент В моем приложении CheckedListBox я хочу разрешить проверку только одного элемента. Я уже установил эти свойства checkOnClick = true; SelectionMode = One; Любые рекомендации будут оценены Ответ 1 снимите все остальные элементы в событии ItemCheck, как показано ниже: private void checkedListBox1_ItemCheck(object sender, ItemCheckEventArgs e) { for (int ix = 0; ix < checkedListBox1.Items.Count; ++ix) if (ix != e.Index) checkedListBox1.SetItemChecked(ix, false); } Ответ 2 лучший способ сделать это выглядит следующим образом: private void checkedListBox1_ItemCheck(object sender, ItemCheckEventArgs e) { if (e.NewValue == CheckState.Checked && checkedListBox1.CheckedItems.Count > 0) { checkedListBox1.ItemCheck -= checkedListBox1_ItemCheck; checkedListBox1.SetItemChecked(checkedListBox1.CheckedIndices[0], false); checkedListBox1.ItemCheck += checkedListBox1_ItemCheck; } } нет циклов всегда лучше.
Ответ 1 снимите все остальные элементы в событии ItemCheck, как показано ниже: private void checkedListBox1_ItemCheck(object sender, ItemCheckEventArgs e) { for (int ix = 0; ix < checkedListBox1.Items.Count; ++ix) if (ix != e.Index) checkedListBox1.SetItemChecked(ix, false); }
Ответ 2 лучший способ сделать это выглядит следующим образом: private void checkedListBox1_ItemCheck(object sender, ItemCheckEventArgs e) { if (e.NewValue == CheckState.Checked && checkedListBox1.CheckedItems.Count > 0) { checkedListBox1.ItemCheck -= checkedListBox1_ItemCheck; checkedListBox1.SetItemChecked(checkedListBox1.CheckedIndices[0], false); checkedListBox1.ItemCheck += checkedListBox1_ItemCheck; } } нет циклов всегда лучше.