传递事件的参数

书名:WPF专业编程指南
作者:李应保
出版社:电子工业出版社
出版时间:2010-01
ISBN:9787121100116


一、RoutedEventArgs

  • 处理常规.NET事件的委托函数一般有两个参数,一个是事件产生的对象,另一个是该事件所带的参数。
    例如,处理打开文件的菜单处理程序一般具有下面的形式:
  void OnOpenFile(object sender, EventArgs ea )
  {
      //处理该菜单
  }

这里参数sender是object类型,即它可以是任何.NET类;EventArgs则是所有事件参数的基类。.NET程序员可以根据事件本身的要求在事件参数中加入自己的参数,通常的做法是从EventArgs或其派生类中派生出自己的类。

  • 传递事件也是采用这种处理方式,例如在处理按钮Click事件时用的处理函数:
      void OnDisplayLogicalTree(object sender, RoutedEventArgs ea)
        {
            if (selectElement != null)
            {
              DisplayTreeWindow createWin = new
                      DisplayTreeWindow();
              createWin.CreateLogicalTree(selectElement);
              createWin.Show();
            }
        }
  • DisplayLogicalTree中也有两个参数,一个是sender,类型为object;另一个是ea,类型为RoutedEventArgs。有些传递事件直接使用RoutedEventArgs类,有些事件则要使用RoutedEventArgs的派生类。EventArgs是RoutedEventArgs的基类,表7-1示出了RoutedEventArgs类中的属性:


    表7-1 RoutedEventArgs中的属性
  • WPF根据传递事件的种类,从RoutedEventArgs中大概派生出了50个类,而且这些类的数目还在快速增长。例如处理键盘事件有KeyBoardEventArgs、处理鼠标事件有MouseEventArgs等,也可以定义自己的RoutedEventArgs。
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 现在我们的函数没有参数,但是现实中的情况往往需要向函数传递参数。举例来说,比如这里我们要处理装有商品的购物车,当我...
    灯火葳蕤234阅读 294评论 0 0
  • 一、理解事件事件采用发布/订阅模型,其中发行者决定在什么情况下引发事件,而订户决定为响应事件而执行的操作。事件可以...
    CarlDonitz阅读 343评论 0 0
  • 网上讲C#委托和事件的博文已经非常多了,其中也不乏一些深入浅出、条理清晰的文章。我之所以还是继续写,主要是借机整理...
    丑小丫大笨蛋阅读 1,189评论 0 5
  • 认识发布者/订阅者模式 情景:当一个特定的程序事件发生时,程序的其他部分可以得到该事件已经发生的通知 发布者定义一...
    东南有大树阅读 1,944评论 0 6
  • 普通CLR事件: 事件的拥有者:即消息的发送者。事件的宿主可以在某些条件下激发它拥有的事件,事件被触发则消息被发送...
    Ch_Running阅读 815评论 0 0

友情链接更多精彩内容