I assume that you're concerned about the WinForms CheckedListBox (CLB) here. I think a better Approach for your Problem is to attach to the "ItemCheck" Event of the CLB.
private void AttachEvents()
{
// ....
this.checkedListBox.ItemCheck += CheckedListBoxOnItemCheck;
}
private void CheckedListBoxOnItemCheck(object sender, ItemCheckEventArgs itemCheckEventArgs)
{
var item = checkedListBox.Items[itemCheckEventArgs.Index];
System.Diagnostics.Debug.WriteLine("Item in question: " + item);
System.Diagnostics.Debug.WriteLine("Previous check state: " + itemCheckEventArgs.CurrentValue);
System.Diagnostics.Debug.WriteLine("New check state: " + itemCheckEventArgs.NewValue);
}
Depending on your applications Needs, you should also do the following:
this.checkedListBox.CheckOnClick = true;
Then your CLB will behave as most users would expect.
Regards,
Alex