J'utilise une minuterie pour résoudre ce problème. Activez le minuteur via l'événement ItemCheck. Prenez des mesures dans l'événement Timer's Tick.
Cela fonctionne si l'élément est vérifié par un clic de souris ou en appuyant sur la barre d'espace. Nous tirerons parti du fait que l'élément qui vient d'être coché (ou non coché) est toujours l'élément sélectionné. L'intervalle du temporisateur peut être aussi bas que 1. Au moment où l'événement Tick est déclenché, le nouvel état Vérifié sera défini.
Ce code VB.NET montre le concept. Il existe de nombreuses variantes que vous pouvez utiliser. Vous pouvez augmenter l'intervalle du temporisateur pour permettre à l'utilisateur de modifier l'état de contrôle sur plusieurs éléments avant de passer à l'action. Ensuite, dans l'événement Tick, effectuez une passe séquentielle de tous les éléments
éléments de la liste ou utilisez sa collection CheckedItems pour prendre les mesures appropriées. C'est pourquoi nous désactivons d'abord le temporisateur dans l'événement ItemCheck. Désactiver puis Activer provoque le redémarrage de la période d'intervalle.
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
double possible de [Quel événement CheckedListBox déclenche après un élément est vérifié] (http://stackoverflow.com/questions/3666682/which-checkedlistbox-event-triggers-after-a-item-is- cochée) – taocp