当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > C#事件机制归纳下

ASP.NET
asp.net Server.MapPath方法注意事项
asp.net下常用的加密算法MD5、SHA-1应用代码
几个 ASP.NET 小技巧
ASP.NET内置对象之Application对象
ASP.NET使用正则表达式屏蔽垃圾信息
asp.net“服务器应用程序不可用” 解决方法
asp.net Linq把数据导出到Excel的代码
asp.net ext treepanel 动态加载XML的实现方法
silverlight2.0Beta版TextBox输入中文解决方法
asp.net转出json格式客户端显示时间
asp.net下Linq To Sql注意事项小结
ASP.NET动态加载用户控件的实现方法
asp.net web大文件上传带进度条实例代码
asp.net DZ论坛中根据IP地址取得所在地的代码
向asp.Net进发 数据库连接操作
.net 上传文件前所未有的简单
asp.net gridview代码绑定
asp.net中List的使用方法
Asp.net(C#)实现验证码功能代码
asp.NET开发中正则表达式中BUG分析

ASP.NET 中的 C#事件机制归纳下


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 220 ::
收藏到网摘: n/a

3.C#中预定义事件处理方式 学习事件,我觉得最不好理解的就是C#中预定义了事件,使我才开始学习事件时一头雾水。在查了些资料后,终于弄明白了一些,如下: EventArgs是包含事件数据的类的基类,用于传递事件的细节。 EventHandler是一个委托声明如下(其在.Net类库中如下声明的) public delegate void EventHandler( object sender , EventArgs e ) 所以,所有形如: void 函娄名(object 参数名,EventArgs 参数名); 的函数都可以作为Control类的Click事件响应方法了。如下面所定义的一个事件响应方法: private void button1_Click(object sender, System.EventArgs e) 参数object sender表示引发事件的对象,(其实这里传递的是对象的引用,如果是button1的click事件则sender就是button1)System.EventArgs e 代表事件的相应信息,如鼠标的x,y值等。 下面我们研究一下Button类看看其中的事件声明,以Click事件为例。 public event EventHandler Click; 这里定义了一个EventHandler类型的事件Clickprivate void button1_Click(object sender, System.EventArgs e) { ... }这是我们和button1_click事件所对应的方法。注意方法的参数符合委托中的签名(既参数列表)。那我们怎么把这个方法和事件联系起来呢,请看下面的代码。this.button1.Click += new System.EventHandler(this.button1_Click); (其实button1.Click 为System.EventHandler委派的实例事件。与委派中委派实例委托给某一方法非常相似)把this.button1_Click方法绑定到this.button1.Click事件。 4.事件的参数的使用。 using System; class Class1 { static void Main() { Student s1=new Student(); s1.Name ="Student1"; Student s2=new Student(); s2.Name ="Student2"; s1.RegisterOK +=new Student.DelegateRegisterOkEvent(Student_RegisterOK); s2.RegisterOK +=new Student.DelegateRegisterOkEvent(Student_RegisterOK); //当Register方法一执行,触发RegisterOK事件 //RegisterOK事件一触发,然后执行Student_RegisterOK方法 s1.Register(); s2.Register(); Console.ReadLine(); } static void Student_RegisterOK(RegisterOkArgs e) { Console.WriteLine(e.EventInfo); } } class Student { public delegate void DelegateRegisterOkEvent(RegisterOkArgs e); public event DelegateRegisterOkEvent RegisterOK; public string Name; public void Register() { Console.WriteLine("Register Method"); RegisterOK(new RegisterOkArgs("Student Name: "+Name)); } } class RegisterOkArgs:EventArgs { public string EventInfo; public RegisterOkArgs(string eventInfo):base() { this.EventInfo =eventInfo; } }