Jacken_wang 发表于 2013-1-27 05:11:46

C#事件机制学习笔记

C#时间机制学习

事件声明: public event 代理名 事件名;

在C#中,通过使用delegate,可以通过"+="为事件添加一个甚至多个响应方法;"-="来取消这些方法

C#中使用事件的步骤:
1,创建一个委托;
2,将创建的委托与特定的事件相关联;
3,编写事件处理程序;
4,利用编写的事件处理程序生成一个委托实例;
5,把这个委托实例添加到产生事件对象的事件列表中(订阅事件);
6,编写程序来触发事件的产生。

事件实例程序:
捕获键盘输入事件,每次输入一个字符之后再控制台以大写字母的形式输出该字符。
【运行环境:VS2008】

using System;using System.Collections.Generic;using System.Text;namespace StudyEvent2{    class Program    {      static void Main(string[] args)      {            KeyInputMonitor monitor = new KeyInputMonitor();            EventReceiver receiver = new EventReceiver(monitor);            monitor.Run();            //Console.ReadKey();      }    }    internal class KeyEventArgs : EventArgs    {      private char keyChar;      public KeyEventArgs(char keyChar) : base()      {            this.keyChar = keyChar;      }      public char KeyChar      {            get            {                return this.keyChar;            }      }    }    internal class KeyInputMonitor    {      public delegate void KeyDown(object sender, KeyEventArgs e);      public event KeyDown OnKeyDown;      public void Run()      {            bool finished = false;            do            {                Console.WriteLine("Input a char");                string response = Console.ReadLine();                char responseChar = (response == "") ? ' ' : char.ToUpper(response);                switch (responseChar)                {                  case 'X':                        finished = true;                        break;                  default:                        KeyEventArgs keyEventArgs = new KeyEventArgs(responseChar);                        OnKeyDown(this, keyEventArgs);                        break;                }            } while (!finished);      }    }    internal class EventReceiver    {      public EventReceiver(KeyInputMonitor monitor)      {            monitor.OnKeyDown += new KeyInputMonitor.KeyDown(Echo);      }      private void Echo(object sender, KeyEventArgs e)      {            Console.WriteLine("Capture key: {0}", e.KeyChar);      }    }}
页: [1]
查看完整版本: C#事件机制学习笔记