[.NET] C# 知识回顾

二、事件的属性汇总

  • 发行者确定何时引发事件;订阅者决定如何对事件作出响应。

  • 一个事件可以被多个类或对象进行订阅,订阅者可以自由地选择合适的方式进行处理。

  • 没有订阅者进行订阅的事件永远也不会被触发

  • WinForm 和 WebForm 中的事件通常用来表示用户执行的某项操作。

  • 当一个事件包含多个订阅者时,在触发该事件的同时会默认以同步的形式调用事件处理程序。

  • 事件基于 EventHandler 委托和 EventArgs 基类。

三、事件的订阅和取消

  1.用 IDE 订阅事件

图3-1-1 新建一个 WinForm 项目

图3-1-2 由图1双击时所自动创建的代码

图3-1-3 除了图2,在 InitializeComponent 方法也自动增加了这行代码

  2.以编程方式订阅事件

  假设现在是一个新的 WinForm 程序,我们通过手动的方式自己创建事件。在 InitializeComponent 方法下面输入 this.Load +=,然后会出现提示,这时我们按下“Tab 键”,

图3-2-1

  会发现也会自动创建事件处理程序,效果跟上一节的直接双击空白处创建的代码可以说是一致的,代码如下:

  这次,我们直接采用 lambda 方式完成事件的注册:点击空白处显示鼠标点击时的坐标。

$

图3-2-2

  3.用匿名方法订阅事件

  【注意】建议不要使用匿名函数来订阅事件,因为这样会间接的增加取消订阅时的难度。除非你确定自己不会取消订阅。

  4.取消订阅

传送门

  《C# 知识回顾 - 委托 delegate》、《C# 知识回顾 - 委托 delegate (续)》

【参考】https://msdn.microsoft.com/zh-cn/library/awbftdfh(VS.80).aspx

【参考】微软 MSDN 官方文档