博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
不忘本~委托和事件(续)
阅读量:6039 次
发布时间:2019-06-20

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

今天再说说委托在.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             // button112 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自动为我们做好的,不用我们去干预.

转载地址:http://xkrhx.baihongyu.com/

你可能感兴趣的文章
OC语言Block和协议
查看>>
使用xpath时出现noDefClass的错误(找不到某个类)
查看>>
.Net规则引擎介绍 - REngine
查看>>
CSS3 transforms 3D翻开
查看>>
利用传入的Type类型来调用范型方法的解决方案
查看>>
Top命令内存占用剖析
查看>>
转 网络IO模型:同步IO和异步IO,阻塞IO和非阻塞IO
查看>>
求带分数(蓝桥杯)
查看>>
Bootstrap系列 -- 11. 基础表单
查看>>
Retrofit 入门学习
查看>>
Spring Boot学习笔记
查看>>
python3存入redis是bytes
查看>>
laravel 集合接口
查看>>
C/C++二进制读写png文件
查看>>
thymleaf 常用th 标签
查看>>
RTB 广告系统
查看>>
Linux signal 那些事儿(2)【转】
查看>>
InfluxDB安装及配置
查看>>
Dynamics CRM Microsoft SQL Server 指定的数据库具有更高的版本号
查看>>
PAT Perfect Sequence (25)
查看>>