Пользователь проверил элемент в CheckedListBox - PullRequest
0 голосов
/ 17 марта 2019

У меня есть CheckedListBox. Я хочу знать, когда пользователь проверил или снял отметку с элемента. Я попытался использовать событие ItemCheck, но оно срабатывает, даже если элемент программно проверен. Как я могу это обнаружить?

1 Ответ

0 голосов
/ 17 марта 2019

Использование обработчика событий 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;
...