Я использую таймер для решения этой проблемы.Включите таймер через событие ItemCheck.Выполните действие в событии Timer Tick.
Это работает независимо от того, проверяется ли элемент щелчком мыши или нажатием пробела.Мы воспользуемся преимуществом того факта, что только что отмеченный (или не отмеченный) элемент всегда является выбранным элементом.
Интервал таймера может составлять всего 1. К моменту возникновения события Tick,будет установлен новый статус Проверено.
Этот код VB.NET показывает концепцию.Есть много вариантов, которые вы можете использовать.Возможно, вы захотите увеличить интервал таймера, чтобы пользователь мог изменить статус проверки нескольких элементов, прежде чем предпринимать какие-либо действия.Затем в событии Tick выполните последовательную передачу всех элементов
в списке или используйте его коллекцию CheckedItems для выполнения соответствующих действий.
Именно поэтому мы сначала отключаем Timer в событии ItemCheck,«Отключить, затем включить» приводит к перезапуску интервала.
Private Sub ckl_ItemCheck(ByVal sender As Object, _
ByVal e As System.Windows.Forms.ItemCheckEventArgs) _
Handles ckl.ItemCheck
tmr.Enabled = False
tmr.Enabled = True
End Sub
Private Sub tmr_Tick(ByVal sender As System.Object, _
ByVal e As System.EventArgs) _
Handles tmr.Tick
tmr.Enabled = False
Debug.Write(ckl.SelectedIndex)
Debug.Write(": ")
Debug.WriteLine(ckl.GetItemChecked(ckl.SelectedIndex).ToString)
End Sub