博客《C#委托与事件》,要点整理如下:
1.基本用法:
1)定义委托。
接口是类的抽象,委托是方法的抽象,或方法的模板。方法的入口地址赋给委托,通过委托来调用该方法,且委托可以调用多个方法(多播的基础)。委托不可派生。
委托的定义: 访问修饰符 _ delegate_ 返回值类型 _委托名 ( 形参1,....,形参n);,其中返回值类型和形参必须与它调用的方法一致。如;
public delegate void SayXX(string s)
委托本身就是一个类,使用前需要实例化(静态的除外)。
委托名 委托实例名 = new 委托名(方法名);
SayXX sayhello = new SayXX(SayHello);
2)定义方法
public void SayHello(string name)
{
Console.WriteLine("Hello,"+ s + "!");
}
3)定义事件
事件的定义: 访问修饰符 _ event_ 委托名 _事件名; public event SayXX come;
4)触发事件
SayXX sayhello = new SayXX(SayHello);
come += sayhello;
come += SayHello;
(3)触发事件
come("张三");
2.窗体中的应用
窗体中委托定义比较规范:
void EventHandler(object sender, EventArgs e);
在设计窗口双击按钮,系统会自动为生成类似如下的方法:
private void button1_Click(object sender, EventArgs e)
{
//事件发生时要执行的方法内容
}
这里的button1_Click事件是符合EventHandler委托规矩的一个具体的方法,即返回值为void,参数分别是一个object和EventArgs。
实际上,系统已经将事件与委托方法关联起来了:
this.button1.Click += new System.EventHandler(this.button1_Click); //核心