理解了几年都理解不了委托的含义,今天好好弄了一下终于个人方面理解了 ;现在加以介绍;
1、委托相当于一个类,这个类里可以不断的往里放函数
2、更深一层的意思是他是一个动态的虚拟层(虚拟类),可以在两个类之间周转,可以让两个类互相使用
3、简单的实例:
需求:
主窗体上有一个label,一个弹出按钮;点击弹出按钮,弹出子窗体;子窗体关闭时,主窗体的的label值改变。
步骤:
点击弹出按钮时,实例化了一个新的子窗体对象,主窗体可以调用子窗体的属性,但是子窗体想调主窗体的属性就只有new一个新的主窗体,原主窗体上的改变显然有问题
方案:
可以用函数返回值做这个效果。更好更直接的方法就是委托;委托是一个虚拟中间层;子窗体上实例化委托,并在关闭子窗体事件中调用这个委托而不是调用主窗体;主窗体也调用这个实例化的委托,为委托添加主窗体上想用的方法(改变label)(注册委托);所以实现过程就是:弹出子窗体时,在主窗体注册这个委托等待触发,关闭子窗体时,子窗体触发这个委托,主窗体上的label随之改变。
子窗体如下:定义并实例化并触发委托
(public delegate void mydel();)
主窗体注册这个委托