Celkem jasně vypadající nadpis s jasnou odpovědí skrývá jednu záludnost. Vím, že k odběru události přihlásím handler pomocí (odpusťte syntaxi CLR/C++)
this->timer1->tick += gcnew System::EventHandler(this, &Form1::MyEventHandler);
Odhlášení události se provede jednoduše stejným systémem
this->timer1->tick -= gcnew System::EventHandler(this, &Form1::MyEventHandler);
V případě, že na stejnou událost mám reagovat buď jedním a nebo druhým handlerem, dejme tomu:
if(comboBox1->Checked)
this->timer1->tick += gcnew System::EventHandler(this, &Form1::MyEventHandler);
else
this->timer1->tick += gcnew System::EventHandler(this, &Form1::MySecondEventHandler);
pokud se tato záležitost uděje jen jednou, je to v pořádku, ale v případě odhlášení a opětovného přihlášení mi to začne dělat bordel
if(comboBox1->Checked)
this->timer1->tick -= gcnew System::EventHandler(this, &Form1::MySecondEventHandler);
this->timer1->tick += gcnew System::EventHandler(this, &Form1::MyEventHandler);
else
this->timer1->tick -= gcnew System::EventHandler(this, &Form1::MyEventHandler);
this->timer1->tick += gcnew System::EventHandler(this, &Form1::MySecondEventHandler);
Nevěděl by někdo, jak provést bezpečně změnu z posledního příkladu? Našel jsem nějaké vlastnosti události, ale kompilátor mi k nim nepovolí přístup. Nebo otázka jiná: je někde v události uvedeno, s čím nebo s kolika handlery je svázaná?
Díky