Я бы установил эти элементы как "Indeterminate" в коде, а затем перезаписал бы свойство "NewValue" из события ItemCheck, когда пользователь пытается проверить / снять их флажок:
public Form1()
{
InitializeComponent();
checkedListBox1.Items.Add("Can't check me", CheckState.Indeterminate);
}
private void checkedListBox1_ItemCheck(object sender, ItemCheckEventArgs e)
{
if (e.CurrentValue == CheckState.Indeterminate)
{
e.NewValue = CheckState.Indeterminate;
}
}
Элемент «Не могу проверить меня» в CheckedListBox не может быть изменен, потому что каждый раз, когда пользователь пытается проверить / снять его, обработчик события меняет его обратно. Соответственно, вы даже не видите обновления пользовательского интерфейса.