C# 委托和事件(三):一个简单的例子

时间:2022-03-29 06:40:29

一个好的 IDE 把大量应该 coding 的部分都省掉了,比如说 windows form 应用程序,在 VS 里直接拖放控件,F4 属性窗口中可以设置大量的初始属性,包括事件和响应。通过 VS 自动生成的代码,来看看 windows form 应用程序在事件方面是如何处理的。

新建一个 windows form 应用程序,,往默认的窗体上拖放一个按钮 button1

这里可以通过 F4 属性窗口设置按钮的文本、位置、大小等一切属性。包括事件和事件的响应程序:

在解决方案管理器中打开 Form1.Designer.cs,其中有一句:

this.button1.Click += new System.EventHandler(this.button1_Click);

显然,这里为 button1 的 Click 事件绑定了一个 EventHandler,这个 EventHandler 是  button1_Click。

在对象浏览器中找到 Click 事件的定义:

public event System.EventHandler Click

很显然,和之前写的那些基本的事件定义一毛一样。再找到 System.EventHandler 的定义:

public delegate void EventHandler(object sender, System.EventArgs e)

总结下使用事件的基本流程:定义一个委托,用这个委托定义一个事件,再把和委托签名一样的方法绑定到这个事件上去就齐活儿了。

如果要使用泛型的委托,则有定义:

public delegate void EventHandler<TEventArgs>(object sender, TEventArgs e)