Visual Studio 2010——C#中的事件
来源:互联网 发布:武汉淘宝商学院学费 编辑:程序博客网 时间:2024/06/07 00:52
实验环境:Windows XP,Visual Studio 2010 Ultimate
1 创建项目:
文件>>新建>>项目,选中“控制台应用程序”。如下图所示:
2 添加以下代码:
using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace testEventApp{ //声明一个委托,用于事件处理 public delegate void Class2_Event_Handler(object sender, string strEventArg); //==============Class2============================== //定义一个类,这个类发送事件 class Class2 { public Class2() { Console.WriteLine("Class2>>>创建一个Class2对象!"); } //利用delegate,定义一个事件 public event Class2_Event_Handler Class2_Event; //一个可以触发事件的方法 public void Class2_Event_Riser() { string strRead; while(true) { Console.Write("Class2>>>"); strRead = Console.ReadLine();//读取用户输入的命令(事件) //如果事件处理函数队列不为空,则发送事件 if(Class2_Event != null) { Console.WriteLine("Class2>>>发送事件:"+strRead); Class2_Event(this, strRead);//发送事件——将Class2转换为object,并将事件strRead发送出去 } //否则,退出程序 else if(strRead=="exit") { System.Environment.Exit(-1); } } } } //==================Program========================== //这个类接受事件 class Program { //构造函数 public Program() { Console.WriteLine("Program>>>创建一个Program对象!"); } //事件处理函数——参数和委托一致 private void On_Class2Event(object sender, string strEventArg) { Console.WriteLine("Program>>>收到Class2中的事件:"+strEventArg); if (strEventArg == "exit") { Class2 senderRef = (Class2)sender; //取消事件处理函数与Class2中事件的关联,本例中,将会使得事件处理函数队列清空 senderRef.Class2_Event -= new Class2_Event_Handler(this.On_Class2Event); Console.WriteLine("Program>>>不再接收Class2的事件!输入exit退出!"); } } static void Main(string[] args) { Program aProgram = new Program(); Class2 aClass2 = new Class2(); //将事件处理函数与Class2中的事件关联 aClass2.Class2_Event += new Class2_Event_Handler(aProgram.On_Class2Event); //调用Class2中的方法,等待触发事件 aClass2.Class2_Event_Riser(); } }}
3 调试:
调试>>启动调试,结果如下
4 工程源码。点击这里下载。
参考资料
《C#实用编程百例》,清华大学出版社,何鹏飞,王征等编著
- Visual Studio 2010——C#中的事件
- Visual Studio 2010——C#中的类
- Visual Studio 2010——C#中的委托
- Visual Studio 2010——C#中的命名空间
- Visual Studio 2010——C#中的字符串
- Visual Studio 2010——C#中的异常处理
- Visual Studio 2010——C#中的Unsafe模式
- Visual Studio 2010——C#中的值类型
- Visual Studio 2010——C#中的属性与索引器
- Visual Studio 2010——C#中的装箱拆箱操作与Object类型
- Visual Studio 2010 ——C#中创建控制台应用程序
- Visual Studio 2010——C#中函数的参数
- Visual Studio 2010——C#工具栏控件的使用
- Visual Studio 2010——C#状态栏控件的使用
- Visual Studio 2010—— C#的ComboBox控件使用
- MOSS 2010:Visual Studio 2010开发体验(14)——列表开发之事件接收器
- MOSS 2010:Visual Studio 2010开发体验(14)——列表开发之事件接收器
- visual studio C/C++ 编程学习(一) visual studio 中的生成事件
- VC++基于微软语音引擎开发语音识别总结
- play framework2.0.*打war包
- 在Azure中删除VirtualMachine的步骤
- 在Ubuntu中安装GCC-4.8
- 泛型编程
- Visual Studio 2010——C#中的事件
- UIActionSheet
- SVN服务器搭建和使用(三)
- js 中checkbox 控制全选
- 获取指定字符串中的图片地址,逗号分隔
- 关于Python源码的编码问题
- Android Recovery系统分析3----Android系统的几种启动模式
- Task Class
- php常用函数大全