2012-06-22 5 views
3

Я создаю приложение winforms с Checkedlistbox, который содержит некоторые имена. Мне нужно, чтобы флажки были отключены от проверки, щелкнув, но все еще можно проверить из кода.Отключить checklistbox по щелчку, но не по коду за

Я попытался установить .CheckOnClick на false, но тогда флажок по-прежнему проверяет второй клик.

Я попытался решением со следующим вопросом: How to disable a checkbox in a checkedlistbox? Но это привело к отключению возможности проверки из кода, а ..

Отключения всей коробки не вариант, это отключит все события, включая выбор и doublemouseclick, которые имеют решающее значение в моем приложении.

Кто-нибудь, кто знает это решение?

ответ

3

Хорошо, что вам нужно сделать, это обрабатывать событие ItemCheck для CheckedListBox, например, так:

private void checkedListBox1_ItemCheck(object sender, ItemCheckEventArgs e) 
{ 
    e.NewValue = e.CurrentValue; 
} 

Если вы хотите измените состояние флажка в коде, тогда вам придется временно удалить дескриптор события:

checkedListBox1.ItemCheck -= checkedListBox1_ItemCheck; 
checkedListBox1.SetItemChecked(1, true); 
checkedListBox1.ItemCheck += checkedListBox1_ItemCheck; 

Это не изящно, но это возможное решение.

Смежные вопросы