一次移除所有事件的委托.以button的Click事件为例

   平时在开发时,有时候需要手动添加事件和移除事件..大多数时候是移除和添加成对出现,然后中间添加代码,以防止执行中间的代码时触发事件可有的时候不小心还是会导致多次触发事件这里就提供一个一次移除所有事件委托的便捷方法.代码如下:

ContractedBlock.gif ExpandedBlockStart.gif Code
      /// <summary>
        
/// 移除事件上绑定的所有委托
        
/// </summary>
        
/// <param name="sender">触发事件源</param>
        
/// <param name="eventName">事件名称</param>
        
/// <param name="del">要移除事件对应的委托</param>
        public void RemoveAllEvent(object sender, string eventName, Delegate del)
        {
            Type type 
= sender.GetType();
            System.Reflection.EventInfo[] eventInfos 
= type.GetEvents(); //获取所有事件信息

            
foreach (System.Reflection.EventInfo var in eventInfos)
            {
                
if (var.Name.Trim().ToUpper() == eventName.Trim().ToUpper())  //移除指定的事件
                {
                    var.RemoveEventHandler(sender, del);
                }
            }
        }


调用代码:
 //调用
            EventHandler del = button3_Click;  //EventHandler委托名根据事件绑定的委托,这里以click事件为例.继承与delegate
            RemoveAllEvent(sender, "Click", del);

转载于:https://www.cnblogs.com/gossip/archive/2009/08/20/1550985.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值