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#实用编程百例》,清华大学出版社,何鹏飞,王征等编著

原创粉丝点击