版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第五讲 代表 事件和索引指示器5.1使用索引器索引器能够将索引用于对象来获得该对象所存储的值。定义格式:Public 数据类型 thisint index Get 想返回的值Set 想赋予的值修饰符有:l newl publicl protectedl internall privatel virtuall sealedl overridel abstract例如 下面的例子用于打印出小组人员的名单程序清单 using Systemclass Teamstring s_name = new string8;public string thisint nIndexGetreturn s_name
2、nIndex;Sets_namenIndex = value;class Testpublic static void Main()Team t1 = new Team();for(int i=0; i8 ;i+)Console.WriteLine(t1i);根据域名解析 IP 地址程序清单 using System;using System.Net;class ResolveDNSIPAddress m_arrayIPs;Public void Resolve(string s_host)IPHostEntry ip = DNS.GetHostByName(s_host);m_arrayIP
3、s = ip.AddressList;public IPAddress thisint nIndexGetreturn m_arrayIPsnIndex;public int IPLengthGetreturn m_arrayIPs.Length;class TestApppublic static void Main()ResolveDNS resolver1 = new ResolveDNS();resolver1.Resolve();int n = resolver1.IPLength;Console.WriteLine(“Get the IP Address o
4、f the host”);Console.WriteLine();for(int i=0;isecond) Int temp=first; First=second; Second=temp; 2)、public static void Descending (ref int first,ref int second) If(first second ) int tmp = first; first = second; second = tmp; public static void Descending( ref int first, ref int second ) if (first s
5、econd ) int tmp = first; first = second; second = tmp; public static void Main() SortClass.Sort up = new SortClass.Sort(Ascending); /创建代表对象 SortClass.Sort down = new SortClass.Sort(Descending); SortClass doIT = new SortClass(); /创建sortclass对象 SortClass.val1 = 310; /设置排序变量 SortClass.val2 = 220; Conso
6、le.WriteLine(Before Sort: val1 = 0, val2 = 1, SortClass.val1, SortClass.val2); doIT.DoSort(up); /调用dosort方法 Console.WriteLine(After Sort: val1 = 0, val2 = 1, SortClass.val1, SortClass.val2); Console.WriteLine(Before Sort: val1 = 0, val2 = 1, SortClass.val1, SortClass.val2); doIT.DoSort(down); Consol
7、e.WriteLine(After Sort: val1 = 0, val2 = 1, SortClass.val1, SortClass.val2); 5.3 事件形象地说, 事件 event 就是类或对象用来“发出通知” 的成员, 通过提供事件的句柄,客户能够把事件和可执行代码联系在一起。事件是类发出的通知,指出了发生某种事情。这样其他类可以根据通知执行某种操作。5.3.1创建事件创建并使用事件的步骤:l 为事件建立代表l 创建一个类来给事件处理程序传递参数、l 声明事件对应的代码l 创建事件发生时将执行的代码。1、 事件的代表要使用事件,首先为事件创建一个代表。创建格式为:Delegat
8、e void EventHandlerName(object source, xxxEventArgs e);EventHandlerName 事件代表名称。事件的代表总是两个参数,第一个是引发事件的源,第二个参数是一个可包含事件处理程序可以使用的数据。例:Delegate void CharEventHandler(object source, CharEventArgs e);2、 EventArgs 类EventArgs类用于将数据传递给事件处理程序,它可以派生出一些新类,即包含用于存储所需值的数据成员。派生类格式:Public class xxxEventArgs:EventArgs/
9、数据成员Public xxxEventArgs(type name) 初始化数据成员假如创建的代表名为CharEventHandler,它传递一个CharEventArgs对象。代码:Public class CharEventArgs:EventArgs Public char currchar; Public CharEventArgs(char Currchar) This.Currchar=Currchar; 3、 事件类的代码创建一个引发事件的类,包含事件的声明。事件声明格式:Public event xxxEventHandler Eventname;xxxEventHandler
10、 /事件代表、Eventname 事件实例。例:Class CharChecker Char curr_char; Public event CharEventHandler TestChar; /创建能委托给代表的事件对象 Public char curr_char Get Return curr_char;Set If (TestChar!=null) CharEventArgs args=new CharEventArgs(value); TestChar(this,args); /调用事件代表 Curr_char=args.CurrChar; 4、 创建事件处理程序事件处理程序在事件发
11、生时被通知,事件处理程序是使用代表的格式创建的一个方法。格式:Void handlername(object source,xxxEventArgs argName) /处理代码。例:static void Drop_A(object scource,CharEventArgs e) If(e.CurrChar=a| e.CurrChar=A) Console.WriteLine(“aaaaaaaa”); e.CurrChar=X; 5、 将事件处理程序和事件关联起来要将事件处理程序和事件关联起来,必须首先声明一个包含事件的对象。例:CharChecker tester=new CharChe
12、cker();要将事件处理程序和事件关联起来使用+=运算符。格式为:oibjectWithEventName.EventObj +=new EventDelegateName(EventName);oibjectWithEventName /事件类声明的对象+= /表示指示器例:Tester.TestChar +=new CharEventHandler(Drop_A);6、 实例:using System;delegate void CharEventHandler(object source, CharEventArgs e); /定义代表public class CharEventArg
13、s : EventArgs /定义传递事件类 public char CurrChar; public CharEventArgs(char CurrChar) this.CurrChar = CurrChar; class CharChecker char curr_char; public event CharEventHandler TestChar; /创建事件实例 public char Curr_Char get return curr_char; set if (TestChar != null ) CharEventArgs args = new CharEventArgs(v
14、alue); TestChar(this, args); curr_char = args.CurrChar; class myApp static void Main() CharChecker tester = new CharChecker(); tester.TestChar += new CharEventHandler(Drop_A); tester.Curr_Char = B; Console.WriteLine(0, tester.Curr_Char); tester.Curr_Char = r; Console.WriteLine(0, tester.Curr_Char);
15、tester.Curr_Char = a; Console.WriteLine(0, tester.Curr_Char); tester.Curr_Char = d; Console.WriteLine(0, tester.Curr_Char); static void Drop_A(object source, CharEventArgs e) if(e.CurrChar = a | e.CurrChar = A ) Console.WriteLine(Dont like a!); e.CurrChar = X; 7、多个事件处理程序using System;delegate void Ch
16、arEventHandler(object source, CharEventArgs e);public class CharEventArgs : EventArgs public char CurrChar; public CharEventArgs(char CurrChar) this.CurrChar = CurrChar; class CharChecker char curr_char; public event CharEventHandler TestChar; public char Curr_Char get return curr_char; set if (Test
17、Char != null ) CharEventArgs args = new CharEventArgs(value); TestChar(this, args); curr_char = args.CurrChar; class MyApp static void Main() CharChecker tester = new CharChecker(); tester.TestChar += new CharEventHandler(Drop_A); tester.TestChar += new CharEventHandler(Change_D); tester.Curr_Char =
18、 B; Console.WriteLine(0, tester.Curr_Char); tester.Curr_Char = r; Console.WriteLine(0, tester.Curr_Char); tester.Curr_Char = a; Console.WriteLine(0, tester.Curr_Char); tester.Curr_Char = d; Console.WriteLine(0, tester.Curr_Char); static void Drop_A(object source, CharEventArgs e) if(e.CurrChar = a |
19、 e.CurrChar = A ) Console.WriteLine(Dont like a!); e.CurrChar = X; / new event handler. static void Change_D(object source, CharEventArgs e) if(e.CurrChar = d | e.CurrChar = D ) Console.WriteLine(Ds are good!); e.CurrChar = Z; 7、 删除事件处理程序using System;delegate void CharEventHandler(object source, Cha
20、rEventArgs e);public class CharEventArgs : EventArgs public char CurrChar; public CharEventArgs(char CurrChar) this.CurrChar = CurrChar; class CharChecker char curr_char; public event CharEventHandler TestChar; public char Curr_Char get return curr_char; set if (TestChar != null ) CharEventArgs args
21、 = new CharEventArgs(value); TestChar(this, args); curr_char = args.CurrChar; class MyApp static void Main() CharChecker tester = new CharChecker(); tester.TestChar += new CharEventHandler(Drop_A); tester.TestChar += new CharEventHandler(Change_D); tester.Curr_Char = B; Console.WriteLine(0, tester.C
22、urr_Char); tester.Curr_Char = r; Console.WriteLine(0, tester.Curr_Char); tester.Curr_Char = a; Console.WriteLine(0, tester.Curr_Char); tester.Curr_Char = d; Console.WriteLine(0, tester.Curr_Char); / Remove event handler. Console.WriteLine(nRemoving event handler.); tester.TestChar -= new CharEventHa
23、ndler(Change_D); / Try D-a-d. tester.Curr_Char = D; Console.WriteLine(0, tester.Curr_Char); tester.Curr_Char = a; Console.WriteLine(0, tester.Curr_Char); tester.Curr_Char = d; Console.WriteLine(0, tester.Curr_Char); static void Drop_A(object source, CharEventArgs e) if(e.CurrChar = a | e.CurrChar =
24、A ) Console.WriteLine(Dont like a!); e.CurrChar = X; / new event handler. static void Change_D(object source, CharEventArgs e) if(e.CurrChar = d | e.CurrChar = D ) Console.WriteLine(Ds are good!); e.CurrChar = Z; public delegate void EventHandler(object sender, EventArgs e);public class Button: Cont
25、rolpublic event EventHandler Click;protected void OnClick(EventArgs e) if (Click != null) Click(this, e);public void Reset() Click = null;5.4 事件的预订和撤消两个按钮 OK 和 Cancel 按钮程序清单 public class LoginDialog: FormButton OkButton;Button CancelButton;public LoginDialog() OkButton = new Button(.);OkButton.Click
26、 += new EventHandler(OkButtonClick);CancelButton = new Button(.);CancelButton.Click += new EventHandler(CancelButtonClick);void OkButtonClick(object sender, EventArgs e) / 处理 OkButton.Click 事件void CancelButtonClick(object sender, EventArgs e) / 处理 CancelButton.Click 事件使用了 Button 类的两个实例 ,事件的预订是通过为事件加上左操作符+= 来实现的OkButton.Click += new EventHandler(OkButtonClick);这样 只要事件被触发 方法就会被调用事件的撤消则采用左操作符 -=OkButton.Click -= new EventHandler(OkButtonClick);5.5 事件访问器添加访问器声明 add-accessor-declaration和删除访问器声明 remove-accessor-declarationclass Control: Component/ Unique keys for eventss
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 山西省运城市新绛县万安中学2026年初三3月统考化学试题含解析
- 云南省罗平县2025-2026学年初三5月中考适应性月考卷(五)化学试题试卷含解析
- 2026年四川省达州市大竹县重点中学中考生物试题原创模拟卷(十一)含解析
- 河北省邯郸市复兴区2025-2026学年初三第三次月考生物试题含解析
- 2026年湖南省长沙市天心区部分校初三第二学期期中考试生物试题试卷含解析
- 山东省聊城市2026年普通高中学业水平等级考试模拟卷(聊城一模)地理+答案
- 2026高考物理二轮复习题型04 静电场的性质(4大题型)(题型专练)(原卷版)
- 南京市2024江苏南京理工大学工程训练中心劳务派遣人员招聘6人笔试历年参考题库典型考点附带答案详解
- 北京市2024北京市中医药研究所面向应届毕业生招聘5人笔试历年参考题库典型考点附带答案详解
- 兰州市2024甘肃兰州化物所仿生与不对称催化组招聘笔试历年参考题库典型考点附带答案详解
- 2026年长沙电力职业技术学院单招职业适应性测试题库及完整答案详解1套
- 2026年大庆医学高等专科学校单招职业技能考试题库及参考答案详解1套
- 青岛版小学科学四年级下册2课小球的运动
- 2025CSCO肿瘤治疗所致血小板减少症诊疗指南
- 高三化学必考知识点梳理
- 2025年新教材人教版二年级上册数学 第1课时 象形图的分类与整课件
- 2026年苏州信息职业技术学院单招职业适应性考试题库新版
- 2025浙江金华市东阳市部分机关事业单位招聘编外人74人员(二)笔试考试参考试题及答案解析
- 学堂在线 雨课堂 学堂云 人工智能 章节测试答案
- 国际经济与贸易专升本2025年真题解析试卷(含答案)
- 2025年国税系统副处级领导后备干部选拔笔试真题及答案解析
评论
0/150
提交评论