Очистить отмеченные элементы из списка без запуска события itemcheck - PullRequest
2 голосов
/ 25 июля 2011

Я получил список проверенных списков в форме form2 (clbForm2), где я просто отображаю его на событие проверки элемента. Теперь мне нужно снять все отмеченные элементы элемента управления в форме Form1 из формы form2. При снятии отметки с предметов запускается событие проверки предмета. Есть ли способ пропустить событие. Я написал код внутри этого, который я не хочу запускать при вызове из form2. Пожалуйста, предложите хороший способ.

Ответы [ 2 ]

6 голосов
/ 25 июля 2011

Отменить привязку события и связать его заново.

_checkBox.CheckedChanged -= new System.EventHandler(yourEventHandler);
// Do Check as you want.
_checkBox.CheckedChanged += new System.EventHandler(yourEventHandler);
2 голосов
/ 25 июля 2011

Я бы предпочел использовать флаг, а не отвязывать / перепривязывать ...

Создайте переменную уровня класса, такую ​​как ...

private bool processCheckChange = true;

Тогда в вашем обработчике событий сделайте ...

OnCheckedChange()
{
   if(processCheckChange)
   {
      //Handle check change
   }
}

Тогда, когда вы хотите снять все пункты ...

UncheckAllItems()
{
   processCheckChange = false;
   //Uncheck all items
   processCheckChange = true;
}

Я думаю, что это должно сделать работу

...