.net培训

最新动态

特大喜讯:智盟培训将于2011年11月 份隆重推出已上线商用项目案例实训课程,课堂案例选用一家中型门户网站作为实训的授课内容。授课老师是该网站项目的技术负责人。网站采用微软Windows Server 2008+ASP.NET4.0平台,开发语言采用C#语言。此网站项目架构设计优秀、技术先进。敬请喜欢的朋友时刻关注本站最新公告!咨询电话:010-52850976

最新开班

  • ASP.NET培训-高级开发班:团报3500元
  • 北京-----11月 10号 已开班
  • 北京-----11月 18号 已开班
  • JAVA培训-高级开发班:团报2800元
  • 北京-----11月 10号 已开班
  • 北京-----11月 12号 已开班
  • 北京-----11月 14号 名额仅限10名
  • 数据库培训-高级开发班:团报3500元
  • 北京-----11月 10号 已开班
  • 北京-----11月 18号 已开班
  • C++培训-高级开发班:团报4400元
  • 北京-----11月 10号 已开班
  • 北京-----11月 12号 已开班
  • 北京-----11月 14号 名额仅限10名

在线答疑

更多>>
姓名
手机
点击我报名

咨询热线

北京.net培训
当前位置:IT培训 >> .NET培训专题 >> .NET培训

.NET FRAMEWORK中的委托和事件

分类: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+培训

北京.net培训

版权声明:此网站相关信息如有侵犯您的版权,请及时通知我们,我们将及时加上您的版权信息或删除其内容,并向您致以诚挚的歉意。
报名咨询地址: 北京丰台区刘家窑桥东大陆写字楼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培训