关于事件冒泡

本文围绕.NET控件中冒泡事件展开,介绍了在控件中定义冒泡事件的方法,如定义启用冒泡的Command事件示例。还阐述了控件对冒泡事件的处理方式,包括不重写OnBubbleEvent自动冒泡、重写并继续冒泡以及重写调用OnEventName方法等,同时说明了相关方法的参数情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在控件中定义冒泡的事件
  如果希望控件为它所定义的事件冒泡,控件只要从引发该事件的OnEventName方法调用RaiseBubbleEvent.
  示例:定义一个启用冒泡的Command事件
        protected virtual void OnCommand(CommandEventArgs e)
        {
            CommandEventHandler handler = (CommandEventHandler)Events[EventCommand];
            if(handler != null)
                handler(this,e);
            RaiseBubbleEvent(this,e);
        }
  注意:事件冒泡并不限于命令事件。可以使用此机制使任何事件冒泡


控件对冒泡事件的处理
  1.如果不重写OnBubbleEvent,事件会自动冒泡到上级.
  2.重写OnBubbleEvent,并从OnBubbleevent调用RaiseBubleEvent,控件进行一些处理并继续使事件冒泡.
  示例:在检查事件参数的类型后使事件冒泡
   protected override bool OnBubbleEvent(object source,EventArgs e)
      {
          if(e is CommandEventArgs)
          {
              TemplatedListCommandEventArgs args = new TemplatedListCommandEventArgs(this,source,(CommandEventArgs)e);
              RaiseBubbleEvent(this,args);
              return true;
          }
          return false;
      }
  3.重写OnBubbleEvent 以调用引发此冒泡的事件的OnEventName方法.引发冒泡的事件的控件(够绕的)通常将冒泡的事件公开为顶级事件.
  注意:在 .NET Framework中 OnEventName方法的标准签名有一个参数(protected void OnEventName (EventArgs e))。但是,OnBubbleEvent有两个参数,因为该事件并不是在处理事件的控件中定义(起源)的,而是起源于控件之外;它的第二个参数的作用是提供源。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值