不忘本~委托和事件(续)

简介:
今天再说说委托在.net中的发展吧,从1.1,2.0到3.0是有不同的,主要表现在定义,调用上,而使用上还是一样的.
在 1.0 的C# 版本中,声明 委托的唯一方法是使用 命名方法。 C# 2.0 引入了匿名方法,而在 C# 3.0 及更高版本中,Lambda 表达式取代了匿名方法,作为编写内联代码的首选方式。 不过,本主题中有关匿名方法的信息同样也适用于 Lambda 表达式。 有一种情况下,匿名方法提供了 Lambda 表达式中所没有的功能。 您可使用匿名方法来忽略参数列表。 这意味着匿名方法可转换为具有各种签名的委托。 这对于 Lambda 表达式来说是不可能的。
 
下面实例中,我叫一个按钮button1分布使用了最原始的方法和匿名的方法来回调方法,看代码:
   
复制代码
 1   private void InitializeComponent()
 2 
 3         {
 4 
 5             this.button1 = new System.Windows.Forms.Button();
 6 
 7             this.SuspendLayout();
 8 
 9             // 
10 
11             // button1
12 
13             // 
14 
15             this.button1.Location = new System.Drawing.Point(74, 40);
16 
17             this.button1.Name = "testbtn1";
18 
19             this.button1.Size = new System.Drawing.Size(75, 23);
20 
21             this.button1.TabIndex = 0;
22 
23             this.button1.Text = "点我";
24 
25             this.button1.UseVisualStyleBackColor = true;
26 
27             this.button1.Click += new System.EventHandler(this.button1_Click);
28 
29           
30 
31             #region 为按钮的单击事件添加一个匿名的方法
32 
33             this.button1.Click += delegate(System.Object o, System.EventArgs e)
34 
35             {
36 
37                 System.Windows.Forms.MessageBox.Show("Click 1");
38 
39             };
40 
41             this.button1.Click += delegate(System.Object o, System.EventArgs e)
42 
43             {
44 
45                 System.Windows.Forms.MessageBox.Show("Click 2");
46 
47             };
48 
49             #endregion
复制代码

 

好了,对委托有了了解后,再来详细的看看MSDN是如何定义事件的吧:

事件(C# 编程指南)

或对象可以通过事件其他类或对象通知发生的相关事情。 发送(或引发)事件的类称为“发行者”,接收(或处理)事件的类称为“订户”。

在典型的 C# Windows 窗体或 Web 应用程序中,可订阅由控件(如按钮和列表框)引发的事件。 可使用 Visual C# 集成开发环境 (IDE) 来浏览控件发布的事件,选择要处理的事件。 IDE 会自动添加空事件处理程序方法和订阅事件的代码。

下图是一个按钮引发了一个事件:(订阅事件代码)

1 this.button1.Click += new System.EventHandler(this.button1_Click);
如果希望取消订阅可以这样写:
1 this.button1.Click -= new System.EventHandler(this.button1_Click);
而VS同时帮助我们添加了一个空的处理事件的方法,如下:
1   private void button1_Click(object sender, EventArgs e)
2 
3         {
4 
5         }

而这一切都是VS,IDE自动为我们做好的,不用我们去干预.

本文转自博客园张占岭(仓储大叔)的博客,原文链接:不忘本~委托和事件(续),如需转载请自行联系原博主。

目录
相关文章
|
8月前
|
存储 安全 C#
C# - 委托与事件
这篇文档介绍了C#中的委托和事件。委托是存储方法引用的类型,支持回调、事件处理,具有引用方法、类型安全、多播性等特性,并在异步编程中发挥作用。事件是委托的封装,提供保护和订阅机制,防止外部直接访问。当需要在类内部控制方法调用,防止外部误触发时,可使用事件。
|
C#
C# 委托和事件
C# 委托和事件
104 0
C# 委托和事件
|
C#
艾伟_转载:解惑答疑:C#委托和事件
  相信很多人一直为C#委托和事件所困惑,尤其是C#的初学者,学到这一部分会感觉比较困难,很有可能就放弃了,而且.NET对委托和事件封装得挺好,一般都不怎么用到自定义的委托和事件,所以放弃学习该技术就有了借口!   网上也有不少此类的文章,最具代表性的是张子阳的C#中的委托和事件这篇,写得的确很好,...
1394 0
|
C#
艾伟:C# 中的委托和事件
引言 委托 和 事件在 .Net Framework中的应用非常广泛,然而,较好地理解委托和事件对很多接触C#时间不长的人来说并不容易。它们就像是一道槛儿,过了这个槛的人,觉得真是太容易了,而没有过去的人每次见到委托和事件就觉得心里别(biè)得慌,混身不自在。
802 0
|
C# 设计模式 编译器
|
Web App开发 安全 C#