委托特性
委托是一种程序特性,用于表示方法(方法的代表,方法的指针),通俗来说就是自己做不了的,通过委托任务给别人来完成。
在委托中,可以动态的增加或删减具体方法与委托变量的关联。
多播委托是指委托变量中有多个具体方法,委托变量执行时会按照具体方法加入的先后顺序,执行具体方法。
委托使用的一般步骤
1、声明委托
//1、声明委托
public delegate void SendMsgDelegate(string msg);
public delegate void RecvMsgDelegate(string msg);
2、编写委托的具体方法
//2、编写委托方法
public void RecvMsg(string msg)
{
this.listBox1.Items.Add(msg);
}
3、创建委托变量
public SendMsgDelegate sendMsgDelegate;
4、关联委托
public Form1()
{
InitializeComponent();
Form2 frm2 = new Form2();
frm2.sendMsgDelegate += RecvMsg;
sendMsgDelegate += frm2.RecvMsg;
frm2.Show();
}
5、执行委托
sendMsgDelegate(textBox1.Text.ToString());
事件
事件是对象对外界信息发生变化,产生的一种消息响应机制,本质上就是一个委托,是委托的进一步包装
public event EventHandler Click;
事件的参与者:发送者(sender)接受者(Receiver)
事件与委托的区别
1、事件不能直接赋值,更不能赋值为NULL,就是因为这样可以避免用户对事件的直接操作,造成底层代码被清除,发生异常,起到一个保护作用。
2、Event对象中没有invoke方法
事件与委托的使用情况
1、在大多数情况,二者都可以处理问题且没有较大区别时,建议使用委托
2、在对控件进行二次开发时,必须使用事件
事件使用的一般步骤
1、声明委托
2、定义事件
3、激发事件
4、编写事件响应方法
5、关联/移除事件
ps:在接受者中,编写响应方法和关联/移除事件。发送者激发事件。
参考代码:https://download.csdn.net/download/qq_39157152/15502133?spm=1001.2014.3001.5501