如何“取消”活动

时间:2009-07-24 16:26:25

标签: c# .net events

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

5 个答案:

答案 0 :(得分:13)

集:

comboBox.Click += EventHandler;

取消设置:

comboBox.Click -= EventHandler;

答案 1 :(得分:2)

您无法使用的原因

comboboxname.Click = null

comboboxname.Click += null

事件Click实际上包含事件处理程序列表。您的活动可能有多个订阅者,要撤消订阅活动,您只需删除自己的事件处理程序。正如在此处指出的那样,您可以使用-=运算符来执行此操作。

答案 2 :(得分:1)

使用 - =运算符。

this.MyEvent -= MyEventHandler;

您的问题表明您对c#中的事件没有很好的理解 - 我建议您深入了解它。

答案 3 :(得分:1)

 //to subscribe
 comboboxname.Click += ComboboxClickHandler; 

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

答案 4 :(得分:0)

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

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

像这样禁用它:

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