ListBox не поддерживает это.Вы можете прикрепить что-то, вы можете отменить выбор выбранного элемента.Вот глупый пример, который запрещает выделение элементов с четными номерами:
private void listBox1_SelectedIndexChanged(object sender, EventArgs e) {
for (int ix = listBox1.SelectedIndices.Count - 1; ix >= 0; ix--) {
if (listBox1.SelectedIndices[ix] % 2 != 0)
listBox1.SelectedIndices.Remove(listBox1.SelectedIndices[ix]);
}
}
Но мерцание довольно заметно и портит навигацию по клавиатуре.Вы можете получить лучшие результаты, используя CheckedListBox, вы можете запретить пользователю ставить флажки для элемента:
private void checkedListBox1_ItemCheck(object sender, ItemCheckEventArgs e) {
if (e.Index % 2 != 0) e.NewValue = CheckState.Unchecked;
}
Но теперь вы не можете переопределить рисование, чтобы для пользователя было очевидно, что элемент не 'т по выбору.Здесь нет хороших решений, гораздо проще просто не отображать элементы в поле, которые нельзя выбирать.