Uso un temporizador para resolver este problema. Habilite el temporizador mediante el evento ItemCheck. Actúa en el evento Timer's Tick.
Esto funciona si el elemento se comprueba con un clic del mouse o presionando la barra espaciadora. Aprovecharemos el hecho de que el artículo que acaba de marcarse (o no) siempre es el Elemento seleccionado.
El intervalo del temporizador puede ser tan bajo como 1. Para cuando se produce el evento Tick, se establece el nuevo estado comprobado.
Este código de VB.NET muestra el concepto. Hay muchas variaciones que puede emplear. Es posible que desee aumentar el intervalo del temporizador para permitir al usuario cambiar el estado de verificación en varios elementos antes de tomar medidas. Luego, en el evento Tick, realice un pase secuencial de todos los elementos
en la Lista o use su colección CheckedItems para tomar las medidas apropiadas.
Es por eso que primero desactivamos el temporizador en el evento ItemCheck. Desactivar y Activar hace que el período de intervalo vuelva a iniciarse.
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
posible duplicado de [¿Qué evento CheckedListBox desencadena después se comprueba un artículo?] (Http://stackoverflow.com/questions/3666682/which-checkedlistbox-event-triggers-after-a-item-is- comprobado) – taocp