C# 事件学习
2017-06-06 16:46
302 查看
C#中使用事件需要的步骤: 1.创建一个委托 2.将创建的委托与特定事件关联(.Net类库中的很多事件都是已经定制好的,所以他们也就有相应的一个委托,在编写关联事件处理程序--也就是当有事件发生时我们要执行的方法的时候我们需要和这个委托有相同的签名) 3.编写事件处理程序 4.利用编写的事件处理程序生成一个委托实例 5.把这个委托实例添加到产生事件对象的事件列表中去,这个过程又叫订阅事件
namespace EventLearn { class Program { static void Main(string[] args) { // MainEntryPoint even = new MainEntryPoint(); EventLearn.MainEntryPoint.Start(); //方法是静态的 } } //首先要创建一个自己的EventArgs类(是包含事件类的基类) //在事件引发时不向事件处理程序传递状态信息的事件会使用此类 //派生出一个类来包含数据 internal class KeyEventArgs : EventArgs { private char _keyChar; //字段 public KeyEventArgs(char value) : base() { this._keyChar = value; } public char KeyChar //属性 { get { return _keyChar; } } } //创建一个事件的发生类,用于监控事件发生并触发一个类 internal class KeyInputMonitor { //创建一个委托, public delegate void KeyDownHandler(object sender,KeyEventArgs eve); //将创建的委托与特定的事件相连,这里特定的事件为KeyDown public event KeyDownHandler KeyDown; public void Run() { bool finish = false; while(!finish) { Console.WriteLine("Input a char"); string response = Console.ReadLine(); char responseChar = (response == "") ? ' ': char.ToLower(response[0]); switch (responseChar) { case 'x': finish = true; break; default: KeyEventArgs keyEvent = new KeyEventArgs(responseChar ); KeyDown(this,keyEvent); //这句是触发事件的语句,并将事件交由KeyDownHandler这个委托来处理, //委托指定事件处理方法去处理事件,这就是事件接收方的类的事情了。 //参数this是指触发事件的对象就是本身这个对象,keyEventArgs包含了按键信息。 //前面已经声明keyEvent为KeyDownHandler---委托 break; } Console.WriteLine(finish); } } } /// <summary> /// 事件接受方的类,这个类先产生一个委托实例,再把这个委托实例添加到产生事件对象的事件列表中去, /// 这个过程又叫订阅事件。然后提供一个方法回显按键信息。 /// </summary> internal class EventReceiver { public EventReceiver(KeyInputMonitor monitor) { monitor.KeyDown += new KeyInputMonitor.KeyDownHandler(this.onKeyDown); } private void onKeyDown(object sender,KeyEventArgs e) { Console.WriteLine("Capture Key:{0}",e.KeyChar ); } } public class MainEntryPoint { public static void Start() { //实例化一个事件发生器 KeyInputMonitor mon=new KeyInputMonitor (); //实例化一个事件接收器 EventReceiver rec=new EventReceiver (mon); mon.Run(); } } }
相关文章推荐
- C# 2.0学习之--事件1
- C# 2.0学习之--事件2
- C#学习3——委托和事件
- 学习c#的事件时写的一个小程序
- C#中的委托和事件学习(续)
- c#写的五子棋程序,供学习WinForms的鼠标事件和使用GDI+
- c#事件学习总结
- C#基础学习系列之:委托和事件
- c#写的五子棋程序,供学习WinForms的鼠标事件和使用GDI+,源码下载。
- C#教学第10讲事件2(学习笔记)
- C# 2.0学习之--事件2
- C#学习之静态成员和非静态成员,构造函数,方法,方法参数,操作符重载,事件
- [学习]C#里的委托和事件实现Observer
- C#事件的学习体会
- c#事件学习
- C# 2.0学习之--事件1
- c#写的五子棋程序,供学习WinForms的鼠标事件和使用GDI+
- C#源码学习之---事件经典例子
- 学习 C#线程同步lock,Monitor,Mutex,同步事件和等待句柄(上) 并且给出源码的改进版
- C#学习之生成事件