CSDN博客

img MasterLRC

关于事件冒泡

发表于2004/6/23 10:45:00  1087人阅读

在控件中定义冒泡的事件
  如果希望控件为它所定义的事件冒泡,控件只要从引发该事件的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有两个参数,因为该事件并不是在处理事件的控件中定义(起源)的,而是起源于控件之外;它的第二个参数的作用是提供源。

0 0

相关博文

我的热门文章

img
取 消
img