Принял совет об использовании ListView. Выглядело и прекрасно работало на моих компьютерах с Windows 7 и Vista, но в XP ListView не отображался должным образом (элементы пересекались друг с другом, флажки не всегда отображались). Проверено, чтобы убедиться, что это не проблема версии фреймворка и не проблема разрешения экрана. Закончилось отступлением к реализации CheckedListBox, в которой НЕ было несоответствия.
Нашел это решение, которое завершило удаление синего выделения в сценарии CheckedListBox для меня. Однако, используя его, вы должны отслеживать выборку другим способом (глобальная переменная, просмотр отмеченных элементов и т. Д.).
Я просто очищаю выбранные элементы после обработки «..._ SelectedIndexChanged». Первое, что я делаю в "..._ SelectedIndexChange", это тест на отсутствие выбора и ничего не делаю, если это изменение. В результате текущий выбранный элемент отображается невыбранным (и фактически не выбранным, т. Е. Не выделяется синим цветом), однако флажок остается отмеченным, указывая самый последний выбор для пользователя.
Пример ==>
Private Sub ModelCheckedListBox_SelectedIndexChanged(ByVal sender As System.Object,...
Dim x As Short = ModelCheckedListBox.SelectedIndex
If x >= 0 Then
'Something I always do since the Selection Mode = "One" doesn't bother to clear
'the checks itself
ModelCheckedListBox.SetItemChecked(x, True)
If ModelCheckedListBox.CheckedItems.Count > 1 Then
For Each item In ModelCheckedListBox.CheckedIndices
If item <> x Then
ModelCheckedListBox.SetItemChecked(item, False)
End If
Next
End If
ModelCheckedListBox.Refresh()
'More of your code
ModelCheckedListBox.ClearSelected()
End If
End Sub