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

ASP.NET
赫赫大名的A*寻路算法(vb.net版本)
asp.net(c#)下Jmai去说明 使用与下载
[原创]完美解决Could not load file or assembly ''AjaxPro.2'' or one of its dependencies. 拒绝访问。
asp.net下gridview 批量删除的实现方法
用CSS实现图片倾斜 只支持IE
.net get set用法小结
vs 不显示行号的操作方法
ASP.NET页面进行GZIP压缩优化的几款压缩模块的使用简介及应用测试!(附源码)
ASP.Net不执行问题一解
asp.net 无限分类
让VS2008对JQuery语法的智能感知更完美一点
扩展方法ToJSON() and ParseJSON()
asp.net下PageMethods使用技巧
Linq to SQL Delete时遇到问题的解决方法
实现ASP.NET多文件上传程序代码
ASP.NET AJAX 1.0 RC开发10分钟图解
asp.net get set用法
ASP.NET下使用WScript.Shell执行命令
asp.net2.0实现邮件发送(测试成功)
Asp.net 无限级分类实例代码

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 80 ::
收藏到网摘: 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; } }