Использование обработчика событий ItemCheck
является правильным методом для определения, когда пользователь отмечает или снимает отметку с элемента в CheckedListBox
. И да, он также будет срабатывать при программной проверке / снятии отметки.
Если вы не хотите, чтобы событие запускалось при программной установке / удалении элементов, вам следует удалить обработчик события перед этим.
Предполагается, что ваш обработчик событий выглядит следующим образом:
private void checkedListBox1_ItemCheck(object sender, ItemCheckEventArgs e)
{
if (e.NewValue == CheckState.Checked)
{
Debug.Print("Checked");
}
else if (e.NewValue == CheckState.Unchecked)
{
Debug.Print("Un-Checked");
}
}
Прежде чем устанавливать / сбрасывать элементы программно, необходимо добавить строку:
this.checkedListBox1.ItemCheck -= this.checkedListBox1_ItemCheck;
и после того, как элементы были установлены / отменены в коде, повторно добавьте обработчик событий с помощью:
this.checkedListBox1.ItemCheck += this.checkedListBox1_ItemCheck;