学习参考资料:
MSDN:ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.2052/cpguide/html/cpconprovidingeventfunctionality.htm
CodeProject: http://www.codeproject.com/csharp/events.asp
几天来参照MSDN上的委托事件的例子,自已写了一个关于委托的事件。例子很简单,但也能说明关于委托与事件是个什么东西吧。
委托,功能就相当于C/C++中的函数指针。可以用定义的委托来调用所指向的函数。
先声明一个简单的委托:
OK,究竟委托在.net中发挥了什么用处?答案是:可以用于事件。
事件,就是在程序中发生某些情况,需要被相应的函数来处理,比如按纽被按下(Button click)就是一事件,调用到某个函数来处理这个情况。关键的关键是:Button是一个类,它的所有函数都已被封装好,已经不可能再在类中添加相应的函数来处理这个Button被按下究竟该怎么处理。难道像下面这样吗?
这样多不实用,多不现实啊。所以,只能想另外的办法...比如可以让Button_Click变成虚拟函数,然后。添加Button时继承这此Button,然后改写这个函数。但也有一个问题,就是我想让处理按纽被按下时的函数是自定义的,比如MyButton_Click,这样子就没有办法了。
如果用委托来做会是什么样的情况?
首先,要定义一个委托。
public delegate void MyEventHandle(object sender,EventArgs e);
注意,在事件中用委托一般命名为EventHandle.
然后,在Button类中可以这样表示:
这样的类定义好了,那么我们用它的时候就简单多了。不需要往里改写任何里面的东西,只要添加我们想要的函数就好了。
在我们的(客户端)上。
1.写Button被按下时处理的函数,函数随便怎么命名都可以。
2.挂钩,把上面的函数与Button类中的委托挂起来
写的示例代码:https://files.cnblogs.com/shipfi/MyEventSamle.rar