如何“取消设置”事件

如果我在designer.cs页面中设置了一个combobox单击事件,然后在程序运行期间的某个时刻,基于某些条件,我不再需要设置comboboxClick事件,如何“取消设置”它? 我已经尝试过comboboxname.Click + = null并且我已经尝试将它设置为另一个无效的虚拟函数……都不起作用。

组:

comboBox.Click += EventHandler; 

取消设置:

 comboBox.Click -= EventHandler; 

你不能使用的原因

 comboboxname.Click = null 

要么

 comboboxname.Click += null 

是事件Click实际上包含事件处理程序列表。 您的活动可能有多个订阅者,要撤消订阅活动,您只需删除自己的事件处理程序。 正如在这里指出的那样,你使用-=运算符来做到这一点。

使用 – =运算符。

 this.MyEvent -= MyEventHandler; 

你的问题表明你对c#中的事件没有很好的理解 – 我建议你深入研究它。

  //to subscribe comboboxname.Click += ComboboxClickHandler; //to conditionally unsubscribe if( unsubscribeCondition) { comboboxname.Click -= ComboboxClickHandler; } 

假设你的处理程序是这样分配的:

 this.comboBox1_Click += new System.EventHandler(this.comboBox1_Click); 

像这样禁用它:

 this.comboBox1.Click -= new System.EventHandler(this.comboBox1_Click);