博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WPF 自定义路由事件
阅读量:6519 次
发布时间:2019-06-24

本文共 1703 字,大约阅读时间需要 5 分钟。

WPF自定义路由事件一般3个步骤

1.注册路由事件

2.路由事件包装

3.定义触发事件的方法

public class myButton:Button    {        //1.定义并注册事件        public static readonly RoutedEvent TimeEvent = EventManager.RegisterRoutedEvent("GetTime", RoutingStrategy.Bubble, typeof(EventHandler
), typeof(myButton)); //2.包装事件 public event EventHandler GetTime { add { this.AddHandler(TimeEvent, value); } remove { this.RemoveHandler(TimeEvent, value); } } //3.激发事件 protected override void OnClick() { base.OnClick(); TimeRoutedEventArgs args = new TimeRoutedEventArgs(TimeEvent, this); args.ClickTime = DateTime.Now; this.RaiseEvent(args); } }

 这里需要注意的是EventManager.RegisterRoutedEvent方法的第三个参数,委托有EventHandler和RoutedEventHandler,看它们的定义,发现EventHandler可以带一个自定义的消息参数

// 摘要:    //     表示将处理事件的方法。    //    // 参数:    //   sender:    //     事件源。    //    //   e:    //     一个包含事件数据的 System.EventArgs。    //    // 类型参数:    //   TEventArgs:    //     由该事件生成的事件数据的类型。    [Serializable]    public delegate void EventHandler
(object sender, TEventArgs e);

 

而RoutedEventHandler只能严格按照委托类型来定义

// 摘要:    //     表示将处理各种路由事件的方法,这些路由事件不包含除所有路由事件共有数据之外的其他特定事件数据。    //    // 参数:    //   sender:    //     附加此事件处理程序的对象。    //    //   e:    //     事件数据。    public delegate void RoutedEventHandler(object sender, RoutedEventArgs e);

 

表面上的区别就在这里,如果你的路由事件需要自定义消息参数,那么就选择EventHandler,再深一点的区别,那么还请前辈们告知。

定义好路由事件之后,只需要在订阅者加入侦听即可

 

转载于:https://www.cnblogs.com/HelloMyWorld/archive/2013/04/05/3000847.html

你可能感兴趣的文章
mysql 自动化脚本备份
查看>>
virtual PC 打造IE6、IE7、IE8、IE9等多版本共存原版测试环境
查看>>
js面向对象1
查看>>
[] ubuntu 14.04 搜狗拼音输入法安装
查看>>
内部类
查看>>
高速数论变换(NTT)
查看>>
Springmvc的跳转方式
查看>>
加密原理介绍,代码实现DES、AES、RSA、Base64、MD5
查看>>
LINUX中常用操作命令
查看>>
自适应和响应式布局的区别,em与rem
查看>>
成都市2014级三诊第16题(理科)
查看>>
12.scrapy框架之递归解析和post请求
查看>>
python 获取进程pid号
查看>>
链表中插入一个节点的三种情况
查看>>
洛谷.4180.[模板]次小生成树Tree(Kruskal LCA 倍增)
查看>>
spring怎么实现单例模式?
查看>>
TCL函数“参数自动补全” 与 “help 信息显示”
查看>>
捕捉鼠标位置以及mousedown、mouseup
查看>>
POJ1050To the Max
查看>>
汇编基础--标识符、标号、伪指令和指令
查看>>