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]