博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用UIElement.AddHandler捕获已被处理的RoutedEvent
阅读量:6860 次
发布时间:2019-06-26

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

UIElement.AddHandler 方法 (RoutedEvent, Delegate)

将指定的 路由事件的一路由事件 处理程序,将处理程序添加到当前元素的处理程序集合。


可以将同一事件多个纪元的同一处理程序,而不引发异常。但是,在中,在处理事件时,处理程序实际调用多次。因此,请考虑此行为如何可能有应考虑在您的处理程序实现的副作用。

通常使用此方法提供实现 “添加”自定义路由事件的 Microsoft .NET 事件访问模式的访问器。

MSDN源码:

// 摘要:// 为指定的路由事件添加路由事件处理程序,并将该处理程序添加到当前元素的处理程序集合中。将 handledEventsToo 指定为 true 时,可为已标记为由其他元素在事件路由过程中处理的路由事件调用所提供的处理程序。//// 参数:// routedEvent:// 要处理的路由事件的标识符。//// handler:// 对处理程序实现的引用。//// handledEventsToo:// 如果为 true,则将按以下方式注册处理程序:即使路由事件在其事件数据中标记为已处理,也会调用该处理程序;如果为 false,则使用默认条件注册处理程序,即当路由事件已标记为已处理时,将不调用该处理程序。默认值为// false。不要例行地请求重新处理路由事件。有关更多信息,请参阅“备注”。//// 异常:// System.ArgumentNullException:// routedEvent 或 handler 为 null.//// System.ArgumentException:// routedEvent 不表示支持的路由事件。-或- handler 不实现支持的委托。//// System.NotImplementedException:// 试图为当前平台的变体不支持的事件添加处理程序。public void AddHandler(RoutedEvent routedEvent, Delegate handler, bool handledEventsToo);

 

1.自我简单通过Button实现代码:

button1.AddHandler(Button.MouseLeftButtonDownEvent, new MouseButtonEventHandler(myListBox_MouseLeftButtonDown), true);public void myListBox_MouseLeftButtonDown(object sender, MouseButtonEventArgs e){MessageBox.Show("Look");}

 

2.自定义事件支持事件路由

public class MyButtonSimple: Button{    // Create a custom routed event by first registering a RoutedEventID    // This event uses the bubbling routing strategy    public static readonly RoutedEvent TapEvent = EventManager.RegisterRoutedEvent(        "Tap", RoutingStrategy.Bubble, typeof(RoutedEventHandler), typeof(MyButtonSimple));    // Provide CLR accessors for the event    public event RoutedEventHandler Tap    {            add { AddHandler(TapEvent, value); }             remove { RemoveHandler(TapEvent, value); }    }    // This method raises the Tap event    void RaiseTapEvent()    {            RoutedEventArgs newEventArgs = new RoutedEventArgs(MyButtonSimple.TapEvent);            RaiseEvent(newEventArgs);    }    // For demonstration purposes we raise the event when the MyButtonSimple is clicked    protected override void OnClick()    {        RaiseTapEvent();    }}
Click to see Tap custom event work

 

转载于:https://www.cnblogs.com/Yukang1989/archive/2013/01/10/2854971.html

你可能感兴趣的文章
c#中使用NetCDF存储二维数据的读写操作简单应用
查看>>
linux网络相关命令使用
查看>>
java基础(二)
查看>>
cocos2d中的anchorPoint
查看>>
记录一下:chrome上,把网页保存为文件的插件
查看>>
C#和Javascript间互转的Xxtea加解密
查看>>
BAT批处理中的字符串处理详解(字符串截取)
查看>>
智力题集锦【二】
查看>>
读 《我为什么放弃Go语言》 有感
查看>>
删除MySQL中冗余字段
查看>>
linux基础—课堂随笔_03 SHELL脚本编程基础
查看>>
【Win7快捷键启动程序有哪些妙招】
查看>>
MS DOS 命令大全
查看>>
College student reflects on getting started in open source(一)
查看>>
Windows下初次手动安装composer详细教学
查看>>
Oracle 查询库中所有表名、字段名、字段名说明,查询表的数据条数、表名、中文表名、...
查看>>
JAVA入门到精通-第53讲-数据库概念
查看>>
升级10.10 Yosemite 后,cocoapods 出现错误(解决方案)
查看>>
[Microsoft][ODBC 驱动程序管理器] 在指定的 DSN 中,驱动程序和应用程序之间的体系结构不匹配...
查看>>
SQL ROW_NUMBER() 分页使用示例
查看>>