您的位置:首页 > 其它

委托与事件初探

2011-10-25 15:15 323 查看
一言以蔽之:

  委托是指将一个方法作为参数传递给另外一个参数,它实现起来极其类似于一个类,而实际上它是一个特殊的类。

  事件是一种特殊的委托,是委托的实例。

委托的使用:

  Note:使用委托的全过程与使用一个类的全过程完全相同。同样需要先定义一个类,然后调用的时候实例化等等。

  example:

namespace DelegateDemo
{
class Program
{
public delegate void GreetDelegate(string name);//先定义委托
private static void EnglishGreet(string name)//定义两个方法
{
Console.WriteLine("Hello," + name);
}
private static void ChineseGreet(string name)
{
Console.WriteLine("你好," + name);
}
private static void Greet(string name, GreetDelegate MakeGreet)//定义使用委托的方法
{
MakeGreet(name);
}
static void Main(string[] args)
{
GreetDelegate gd = new GreetDelegate(EnglishGreet);
gd += ChineseGreet;
Greet("Jay-Z", EnglishGreet); ;
Greet("亦非寻常", ChineseGreet);

Console.WriteLine("");//注意上下两种委托的初始化方式。
                     //可以想象成类的初始化,只不过构造函数默认是带有一个参数的。

GreetDelegate gd1 = EnglishGreet;
gd1 += ChineseGreet;
Greet("James", EnglishGreet); ;
Greet("小明", ChineseGreet);

Console.ReadKey();

}
}
}

输出:

Hello,Jay-Z
你好,亦非寻常

Hello,James
你好,小明

事件的使用:

  Note:事件是基于EventHandle委托和EventArgs类。

    一般事件的使用经历以下几个步骤:

      1.先定义一个委托。  

public delegate void 委托名(Object sender,EventArgs e);//Note:按照.Net规范,委托名以EventHandle结尾。

      2.定义一个事件字段。

public Event 委托名 事件名;//Note:按照.Net规范,事件名以Event结尾。

      3.最后创建方法,触发事件。

  example:

namespace EventDemo
{
public partial class Form1 : Form
{

     //1.public delegate void BtnEventHandle(Object sender, EventArgs e);//先定义委托
//2.public event BtnEventHandle BtnClick;//定义事件
public Form1()
{
InitializeComponent();
button1.Click+=new EventHandler(button1_Click);//这里的委托实际上已经创建好了,一般而言Winform
                               //控件中事件是已经注册好的,委托都是EventHandle

     }

private void button1_Click(Object sender, EventArgs e)
{
MessageBox.Show("这是由Button1触发的Event", "EventDemo", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
}

最后结果如下:



转自:http://www.cnblogs.com/itcat1990/archive/2011/06/09/2076706.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: