特大喜讯:智盟培训将于2011年11月 份隆重推出已上线商用项目案例实训课程,课堂案例选用一家中型门户网站作为实训的授课内容。授课老师是该网站项目的技术负责人。网站采用微软Windows Server 2008+ASP.NET4.0平台,开发语言采用C#语言。此网站项目架构设计优秀、技术先进。敬请喜欢的朋友时刻关注本站最新公告!咨询电话:010-52850976
分类:net培训专题|来源:CSDN|发布时间:2011-4-11 8:41:17
委托是什么?
它就是一"托儿",你一旦上了它的贼船,那么后续的很多好戏就该轮番上演了!
为啥?因为这个"托儿"有一肚子的坏水在等着你呢(它代理的那些方法)!
另外,从好的方面讲,委托就是一尚方宝剑,可以当皇帝老子使!牛着呐!
下面举个例子来说明下:
首先定义一个委托:
public delegate void SomethingHappendEventHandler(ReorderEventArgs e);
看见没,它和普通方法有嘛区别?对了,就是多了一个delegate关键字!
另外,委托是啥类型?别跟我说你不知道!引用类型呗!相对应的就是值类型啦!
下一个要注意的就是参数了,ReorderEventArgs是何方神圣?看看!
public class ReorderEventArgs : EventArgs{
private int _quantity;
public ReorderEventArgs(int quantity)
{
_quantity = quantity;
}
public int QuantityOnHand
{
get { return _quantity; }
}
}
原来不过如此,只不过从EventArgs继承而来,EventArgs是啥?是默认的事件参数,由框架提供的,对于它 其实大家早就已经司空见惯了,是否感觉眼熟?对了,就是在这里看到过:
private void Form2_Load(object sender, EventArgs e) {}
现在我们定义好了一个委托,那么怎么让它发挥作用呢?
接下来,我们使用刚刚的委托来声明一个事件:
public event SomethingHappendEventHandler SomethingHappened; 这里换了一个关键词,原来delegate的位置换成了event!还有一点变化,是什么?
SomethingHappened是不是没有参数?对的,它的参数其实在SomethingHappendEventHandler 中进行定义了,SomethingHappened其实就是一个委托类型,下面来定义一个响应该事件的方法:
private void x_SomethingHappened(ReorderEventArgs e)
{
Console.WriteLine("QuantityOnHand's value is {0}", e.QuantityOnHand);
}
现在有了一个方法,那么怎么让它响应SomethingHappened事件呢?自然,需要注册一下:
在一个合适的位置,比如构造函数,FormLoad事件、PageLoad事件等地方:
this.SomethingHappened += x_SomethingHappened;
在c#使用+=运算符即可为事件注册一个监听方法,很方便。
那么,万事俱备似乎只欠东风了,这东风是啥?当然是激活事件了:
public void RaiseEvents(){
ReorderEventArgs args=new ReorderEventArgs(100);
SomethingHappened(args);
}
好了,如你所愿,事件激活了,监听的方法也发现新大陆似的立马积极的给予了响应!
最后,咱总结下,委托是who?这事件又是who?委托和事件到底是what关系?学这个啥用?
你如果在一个按钮上双击一下,vs会自动给你创建一个事件处理程序,如下:
private void button1_Click(object sender, EventArgs e){
timer1.Enabled = true;
}
那么,有没有想过为什么在这里写代码系统就会响应Click事件呢?秘密就在vs悄悄的帮你生成的代码文件中, 一个叫做xx.designer.cs文件中,多了这样一句话:
this.button1.Click += new System.EventHandler(this.button1_Click);
看清楚了吧,其实button1_Click这个方法被vs悄悄的注册给系统预定义事件Click了,这个事件是谁的?button1的!
一切又回到了原点,是否对基于事件编程的原理有拨云见日的感觉?哈哈,快去改造你自己的程序去吧!
本文来自智盟无忧net培训培训网(http://www.netpeixun.com),转摘请注明出处
本文标题:.NET培训 TAG标签:MFC培训 COM培训 COM+培训

上一篇:MFC高级应用程序设计与开发
下一篇:STL与泛型编程高端应用与开发
版权声明:此网站相关信息如有侵犯您的版权,请及时通知我们,我们将及时加上您的版权信息或删除其内容,并向您致以诚挚的歉意。
报名咨询地址: 北京丰台区刘家窑桥东大陆写字楼A203室(每天早晨9:00到晚上18:00全天提供咨询和报名服务,周末照常服务)
IT培训/计算机培训/电脑培训/计算机上门培训 地址: 北京丰台区刘家窑桥东大陆写字楼A203室 邮政编码:100079
电脑培训/IT培训团体/企业培训联系电话:15101019808 010-52850976
MSN:zhimeng@live.cn QQ:120181366 || 客服邮箱:120181366@qq.com
Copyright(c) 2010 智盟科技 法律顾问:徐涛律师
京ICP备10025228号
特色培训:病毒木马培训、黑客培训、软件破解培训、项目管理培训、数据库培训、db2培训、mysql培训、oracle培训