已阅读5页,还剩1页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C#委托事件及自定义事件的处理 2009-08-04 13:53 pipi_sn csdn 我要评论(0)本文介绍了C#委托、C#事件、C#自定义事件及其处理,希望会对大家有一定的启发。一、C#委托类委托类似于函数指针,但函数指针只能引用静态方法,而委托既能引用静态方法,也能引用实例方法。委托使用分三步:1、委托声明;2、委托实例化;3、委托调用。例程一:程序代码1. usingSystem; 2. 3. namespace委托 4. 5. delegateintNumOpe(inta,intb);/第一步:委托声明 6. classClass1 7. 8. staticvoidMain(stringargs) 9. 10. Class1c1=newClass1(); 11. NumOpep1=newNumOpe(c1.Add);/委托实例化,注意参数是要使用的参数名,且不带括号 12. Console.WriteLine(p1(1,2);/委托调用 13. Console.ReadLine(); 14. 15. 16. privateintAdd(intnum1,intnum2) 17. 18. return(num1+num2); 19. 20. 21. 22. 例中,委托NumOpe引用了方法Add。委托声明了以后,就可以象类一样进行实例化,实例化时把要引用的方法(如:Add)做为参数,这样委托和方法就关联了起来,就可以用委托来引用方法了。委托和所引用的方法必须保持一致:1、参数个数、类型、顺序必须完全一致。2、返回值必须一致。二、C#事件事件有很多,比如说鼠标的事件:MouserMove,MouserDown等,键盘的事件:KeyUp,KeyDown,KeyPress。有事件,就会有对事件进行处理的方法,而事件和处理方法之间是怎么联系起来的呢?委托就是他们中间的桥梁,事件发生时,委托会知道,然后将事件传递给处理方法,处理方法进行相应处理。比如在WinForm中最常见的是按钮的Click事件,它是这样委托的:this.button1.Click += new System.EventHandler(this.button1_Click);按按钮后就会出发button1_Click方法进行处理。EventHandler就是系统类库里已经声明的一个委托。-委托实例化,this.buttion1_click为方法名三、C#自定义事件及其处理EventHandler以及其它自定义的事件委托都是一类特殊的委托,他们有相同的形式:delegate void 事件委托名(object sender,EventArgs e);object用来传递事件的发生者,比如二中的Button控件就是一个事件发生者;EventArgs用来传递事件的细节。例程二:程序代码23. usingSystem; 24. 25. namespace最简单的自定义事件 26. 27. / 28. /事件发送类 29. / 30. classClass1 31. 32. publicdelegatevoidUserRequest(objectsender,EventArgse);/定义委托 33. publiceventUserRequestOnUserRequest;/定义一个委托类型的事件 34. 35. publicvoidrun() 36. 37. while(true) 38. 39. if(Console.ReadLine()=a) 40. /事件监听 41. OnUserRequest(this,newEventArgs();/产生事件 42. 43. 44. 45. 46. 47. / 48. /事件接收类 49. / 50. classClass2 51. 52. staticvoidMain(stringargs) 53. 54. Class1c1=newClass1(); 55. c1.OnUserRequest+=newClass1.UserRequest(c1_OnUserRequest);/委托实例化后绑定到事件 56. c1.run(); 57. 58. 59. privatestaticvoidc1_OnUserRequest(objectsender,EventArgse) 60. /事件处理方法 61. Console.WriteLine(t你触发了事件!); 62. 63. 64. 65. 例程三:程序代码66. usingSystem; 67. 68. namespace带事件数据的事件 69. 70. / 71. /带事件数据的事件类,从EventArgs继承 72. / 73. classOnUserRequestEventArgs:EventArgs 74. 75. privatestringinputText; 76. publicstringInputText 77. 78. get79. 80. returninputText; 81. 82. set83. 84. inputText=value; 85. 86. 87. 88. 89. / 90. /事件发送类 91. / 92. classClass1 93. 94. publicdelegatevoidUserRequest(objectsender,OnUserRequestEventArgse);-声明委托 95. publiceventUserRequestOnUserRequest;-定义一个委托类型的事件 96. 97. publicvoidrun() 98. 99. while(true) 100. 101. Console.WriteLine(请输入内容:); 102. stringa=Console.ReadLine(); 103. /if(a=a) 104. / 105. OnUserRequestEventArgse1=newOnUserRequestEventArgs(); 106. e1.InputText=a; 107. OnUserRequest(this,e1); 108. / 109. 110. 111. 112. 113. / 114. /事件接收类 115. / 116. classClass2 117. 118. STAThread 119. staticvoidMain(stringargs) 120. 121. Class1c1=newClass1(); 122. c1.OnUserRequest+=newClass1.UserRequest(c1_OnUserRequest); 123. c1.run(); 124. 125. 126. privatestaticvoidc1_OnUserRequest(objectsender,OnUserRequestEventArgse) 1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二保培训焊工考试题及答案
- 非固化橡胶沥青防水涂料项目可行性研究报告
- 食用菌种植项目可行性研究报告样例参考模板
- 黄花菜可行性研究报告
- 智慧养老整体规划设计方案
- 2020-2025年主治医师之内科主治303模拟考试试卷A卷含答案
- 2025年度安全生产工作述职报告范文
- 宿州安置补偿协议书
- 土地赠送协议书样板
- 二战钢铁协议书
- 2025中国单机游戏市场现状报告
- 诉讼案件备案管理制度
- 《HTML5+CSS3 Web开发案例教程》课件-第11章 经典DIV+CSS网页布局方法
- 手工刺绣教学课件
- 《汉字演变与书法艺术欣赏课教案》
- 山东省高级农艺师考试试题及答案
- 社区村委会物业管理制度
- 股东退出减资协议书
- 2024-2025学年高一下学期《人生拍卖体验官》主题班会课件
- 《青少年营养健康》课件
- 物流工厂合同协议
评论
0/150
提交评论