Отключение и включение событий программно для элементов управления одного типа - PullRequest
0 голосов
/ 27 февраля 2020

У меня есть три следующих флажка:

CheckBox chk1=new CheckBox();
CheckBox chk2=new CheckBox();
CheckBox chk3=new CheckBox();

Каждый из них имеет разные EventHandlers:

chk1.CheckChanged+=chk1_CheckChanged;
chk2.CheckChanged+=chk2_CheckChanged;
chk3.CheckChanged+=chk3_CheckChanged;

Теперь я хочу сделать некоторые интересные вещи, которые требуют, чтобы события были отключены временно. Это код, который я собираюсь использовать:

foreach (var checkbox in Controls.OfType<CheckBox>()) {
  var currentEvent=checkBox.CheckChanged; // Should contain chk1_CheckChanged , ... etc.
  checkBox.CheckChanged -=currentEvent;
  checkBox.IsChecked=true;
  checkBox.CheckChanged +=currentEvent;
}

Это работает , а не , потому что я не могу просто присвоить EventHandler переменной. Но как сделать что-то вроде динамического выключения / выключения события c?

(я знаю, что могу использовать один и тот же eventHandler для всех трех флажков и просто отключить его, но действия этих трех совсем другой.)

...