принял совет с помощью ListView. Посмотрев и отлично справился с моими окнами Windows 7 и Vista, но в XP, ListView не отображался должным образом (элементы были перегнуты над столбом друг друга, флажки не всегда отображались). Проверено, чтобы убедиться, что это не проблема с версией рамы и что это не проблема с разрешением экрана. Закончилось отступление назад к реализации CheckedListBox, которая НЕ имела несогласованности.
Обнаружено это решение, которое позволило удалить синюю подсветку в сценарии CheckedListBox для меня. Используя его, вы должны отслеживать выбор другим способом (глобальная переменная, просматривая отмеченные элементы и т. Д.).
Я просто удаляю выбранные элементы после обработки «..._ SelectedIndexChanged». Первое, что я делаю в «..._ SelectedIndexChange», - это тест без выбора и ничего не делать, если это изменение. В результате выбранный элемент отображается не выбранным (и на самом деле не выбран, т. Е. Нет синего выделения), однако CheckBox остается отмеченным, указывая самый последний выбор для пользователя.
Пример ==>
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
Является ли это приложение Windows Forms? –
CheckedListBox был реализован из ListBox с помощью пользовательской раскраски. Вы не можете легко настроить его снова, не полностью перепрограммируя его. Использование ListView - хороший совет. –