.net框架自带的两个常用类(Action和EventHandler),当然这两个类型的也可以自定义,但系统已经提供,直接拿来用即可,很方便

1:Action : 引用“void方法”的委托,目前框架提供8种。

2:EventHandler或EventHandler<TEventArgs>:声明事件的委托。

(1)EventHandler定义的事件不能传递任何“事件数据”,如(handler(this, EventArgs.Empty))。EventHandler这个委托的参数列表中第二个参数为:EventArgs,它是包含事件数据的类的基类(很多事件的第二个参数都派生自它  或者说,很多“系统框架事件”对应的“委托”的 第二个参数都派生自它,如:public event MouseButtonEventHandler MouseLeftButtonDown),但在这里,它不包含任何事件数据(在EventArgs的定义中,只有 public static readonly EventArgs Empty  这样一个公共的静态的只读的字段—— Empty )。

(2)EventHandler<TEventArgs>定义的事件可以传递“TEventArgs类型的事件数据”(数据可通过e.属性/方法获得,设置可通过构造器传入,并且e.属性只读),TEventArgs:EventArgs,如 handler(this, new MouseButtonEventArgs(.....))。

关于Action和EventHandler的更多相关文章

  1. C#边边角角(一)

    前言 此篇为在学习C#基础时,熟悉C#的语法和高级特性的一些小的尝试和笔记,记录一下以供分享 集合初始化器 集合必须实现System.Collections.IEnumerable接口 集合必须包含A ...

  2. C#高级编程9-第13章 异步编程

    异步编程 1)异步编程的重要性 在C#5.0中提供了关键字:async和await 使用异步编程后台运行方法调用,程序的运行过程中就不会一直处于等待中.便于用户继续操作. 异步编程有3种模式:异步模式 ...

  3. Hiero中修改BinView中binitem对象名字的方法

    之前博客提到了scan for more version这样一个功能,该功能会放宽查询条件,这就会导致BinItem的名称与activeVersion的名称不符.这篇博客提供了一个方法去统一名称. 该 ...

  4. 65. XPages自定义控件(三)高级搜索之三

    RecordView控件的两个文件的完整代码在本文末尾给出.虽说完整,仅靠这两个文件,RecordView控件还不能正常工作,因为在这两个文件里还引用了其他自定义控件,调用了作为managed bea ...

  5. Java题库——Chapter15 事件驱动编程和动画

    Chapter 15 Event-Driven Programming and Animations Section 15.2 Events and Event Sources1.    A Java ...

  6. 使用EventBus对模块解耦(附实例)

    用于模块间解耦,通过发布订阅的方式调用,每个人只负责自己的那部分. 写个小例子,比如现在有三个模块,订单.购物车.优惠券,由不同的人负责开发. 负责订单模块的人现在需要写个生成订单的方法,生成订单的逻 ...

  7. 关于Action<T> 、Func<T>、EventHandler<T>、event、delegate

    c# 最初的时候 只有 delegate,之后的版本封装了Action<T> .Func<T>.EventHandler<T> 关于Action<T>  ...

  8. 【UWP】使用Action代替Command

    在Xaml中,说到绑定,我们用的最多的应该就是ICommand了,通过Command实现ViewModel到View之间的命令处理,例如Button默认就提供了Command支持,如下 Xaml: & ...

  9. .NET中的Action及Func泛型委托

    委托,在C#编程中占有极其重要的地位,委托可以将函数封装到委托对象中,并且多个委托可以合并为一个委托,委托对象则可以像普通对象一样被存储.传递,之后在任何时刻进行调用,因此,C#中函数回调机制的实现基 ...

随机推荐

  1. 命名空间 <iostream>和<iostream.h> 由程序设计者命名的内存区域

    namespace_百度百科 https://baike.baidu.com/item/namespace/1700121?fromtitle=命名空间 namespace即“命名空间”,也称“名称空 ...

  2. GO语言中使用OpenCV

    GO语言中使用OpenCV - OpenCV China :图像处理,计算机视觉库,Image Processing, Computer Vision http://wiki.opencv.org.c ...

  3. JavaBean 介绍

    // Person.java public class Person{ private String name; private int age; // 无参构造函数 public Person(){ ...

  4. Java 集合框架查阅技巧

    如何记录每一个容器的结构和所属体系呢? List ArrayList LinkedList Set HashSet TreeSet 其中,后缀名就是该集合所属的体系,前缀名就是该集合的数据结构. 看到 ...

  5. Delphi日期设置为NULL

    在某些情况下,需要将日期字段的值置空,这种操作比较麻烦.在操作的时候,可将变量的值(t:TDateTime)设置为0,在操作的过程中进行判断,当t的值为0或-1的时候,时间值为1899年的Delphi ...

  6. numpy.random.seed()

    numpy.random.seed():用于指定随机数生成时使用算法的开始值,如果没有指定每次生成的值都不一样 如果不指定seed的值,那么每次随机生成的数字都不一样: In [17]: import ...

  7. oracle 建立新的表空间

    创建数据表空间 注意粗斜体部分 create tablespace 表空间名称logging datafile 'D:\app\Administrator\oradata\orcl\XXXX.dbf' ...

  8. 如何选择单片机和Android-LInux-ARM开发板?

    源: 如何选择单片机和Android-LInux-ARM开发板?

  9. 【JavaScript】撞墙的小球

    参考: 1.JS 元素位置 设置元素位置:http://blog.sina.com.cn/s/blog_a2ec891e01011v9f.html 2.用JavaScript修改CSS属性 3.使用J ...

  10. Dubbo之RPC架构

    为什么会有dubbo的出现: 随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进. 单一应用架构 当 ...