В моем списке есть одно условие: Точно, один предмет должен быть проверен. Это означает, что изменение проверки предыдущего элемента должно быть отменено. Это работает. Но снятие отметки не должно быть в состоянии. Посмотрев на графический интерфейс после попытки снятия флажка, элемент все еще проверяется из-за второго условия в методе ItemCheck-Method. Невозможно снять отметку с текущей проверки, как она должна быть. Но после того, как вы оставите ItemCheck-Method, количество проверенных элементов изменится с 1 на 0 (Property CheckedItems), хотя я вижу отмеченный элемент. Что-то не хватает в моем коде:Disallow Снять отметку со всех на CheckedListBox
private void myCLB_ItemCheck(object sender, ItemCheckEventArgs e)
{
// 1. Checking one will uncheck all other, works perfectly
if (e.NewValue == CheckState.Checked && myCLB.CheckedItems.Count > 0)
{
myCLB.ItemCheck -= myCLB_ItemCheck;
myCLB.SetItemChecked(myCLB.CheckedIndices[0], false);
myCLB.ItemCheck += myCLB_ItemCheck;
}
// 2. Unchecking without checking another not allowed
if (myCLB.CheckedItems.Count > 0 &&
myCLB.CheckedItems[0].Equals((sender as CheckedListBox).SelectedItem))
{
e.NewValue = CheckState.Checked;
return;
}
// ... do some business here, depending on the check
}
Btw: Использование радиокнопки не вариант, так как есть возможная необходимость в использовании более одного проверки. В этом случае указанные ограничения будут отключены. Я пробовал также другие варианты вторых условий, которые также работали, за исключением того, что всегда CheckedItems.Count меняется от 1 до 0 после того, как оставлен ItemCheck-Method. Я не нашел метод проверки достоверности.
Любая помощь будет очень признательна.
вы в коробке в arent вы с * 'Точно один элемент должен быть проверен *, что должно означать, что они не могут снять последнее и не могут проверить тот, который они действительно хотят, потому что уже один проверен. Вместо того, чтобы микроуровневать пользователя на уровне щелчка, почему бы не проверить, сколько из них проверено, когда они нажимают кнопку «Готово/ok/Submit» и сообщают им, что неправильно? – Plutonix
Они могут проверять все, что захотят, и точно один раз проверяется все время. Это условие, и это то, что видит пользователь. Он может изменить чек, но не может снять флажок. Thats perfect, но _CheckedItems_ имеет счет 0, даже есть один проверенный. Поэтому я не могу узнать, что проверяется. – Sundancer
подумайте об этом ... как только один элемент проверен, нет возможности проверить другой, не нарушая правило. – Plutonix