C# 事件(event)分析
2008-12-21 22:41
435 查看
一直对事件的处理机制不是特别明确,今天看了‘风卷残云后’C#事件解析这篇文章后,模仿了一篇Code之后思路清晰许多,下面是代码:
1 using System;
2 using System.Collections.Generic;
3 using System.Text;
4
5 namespace T_Event
6 {
7 class Program
8 {
9 static void Main(string[] args)
{
KeyInputMonitor monitor = new KeyInputMonitor();
EventReceive receive = new EventReceive(monitor);
monitor.run();
}
}
//此类用来保存按键信息
//internal修饰符:使用该修饰符声明的类型或成员只能在同一程集内访问接口的成员
internal class KeyEventArg:EventArgs
{
private char keychar;
public KeyEventArg(char keychar)
{
this.keychar = keychar;
}
public char KeyChar
{
get
{
return keychar;
}
}
}
internal class KeyInputMonitor
{
public delegate void keydownhandle(object Sender,KeyEventArg e);
public event keydownhandle Onkeydownhandle;
public void run()
{
bool Flag = false;
do
{
Console.WriteLine("Please Input A Char");
string response = Console.ReadLine();
char rChar = (response == "") ? ' ' : char.ToUpper(response[0]);
switch (rChar)
{
case 'X':
Flag = true;
break;
default:
//实例化一个 KeyEventArg,获取按键信息
KeyEventArg keyeventarg = new KeyEventArg(rChar);
//触发Onkeydownhandle事件,并交于委托keydownhandle所指定的方法处理
Onkeydownhandle(this, keyeventarg);
break;
}
} while (!Flag);
}
}
internal class EventReceive
{
public EventReceive(KeyInputMonitor monitor)
{
//程序启动后订阅事件,将委托实例添加到产生事件对象的事件列表中去
monitor.Onkeydownhandle += new KeyInputMonitor.keydownhandle(this.Echo);
}
private void Echo(object sender,KeyEventArg e)
{
Console.WriteLine( "Capture key: {0}", e.KeyChar );
//看看sender(this)传递的是什么值,原来就是KeyInputMonitor类
string strsender = sender.ToString();
Console.WriteLine(strsender);
}
}
}
注释是按自己的理解写的,如果理解有误欢迎指正
1 using System;
2 using System.Collections.Generic;
3 using System.Text;
4
5 namespace T_Event
6 {
7 class Program
8 {
9 static void Main(string[] args)
{
KeyInputMonitor monitor = new KeyInputMonitor();
EventReceive receive = new EventReceive(monitor);
monitor.run();
}
}
//此类用来保存按键信息
//internal修饰符:使用该修饰符声明的类型或成员只能在同一程集内访问接口的成员
internal class KeyEventArg:EventArgs
{
private char keychar;
public KeyEventArg(char keychar)
{
this.keychar = keychar;
}
public char KeyChar
{
get
{
return keychar;
}
}
}
internal class KeyInputMonitor
{
public delegate void keydownhandle(object Sender,KeyEventArg e);
public event keydownhandle Onkeydownhandle;
public void run()
{
bool Flag = false;
do
{
Console.WriteLine("Please Input A Char");
string response = Console.ReadLine();
char rChar = (response == "") ? ' ' : char.ToUpper(response[0]);
switch (rChar)
{
case 'X':
Flag = true;
break;
default:
//实例化一个 KeyEventArg,获取按键信息
KeyEventArg keyeventarg = new KeyEventArg(rChar);
//触发Onkeydownhandle事件,并交于委托keydownhandle所指定的方法处理
Onkeydownhandle(this, keyeventarg);
break;
}
} while (!Flag);
}
}
internal class EventReceive
{
public EventReceive(KeyInputMonitor monitor)
{
//程序启动后订阅事件,将委托实例添加到产生事件对象的事件列表中去
monitor.Onkeydownhandle += new KeyInputMonitor.keydownhandle(this.Echo);
}
private void Echo(object sender,KeyEventArg e)
{
Console.WriteLine( "Capture key: {0}", e.KeyChar );
//看看sender(this)传递的是什么值,原来就是KeyInputMonitor类
string strsender = sender.ToString();
Console.WriteLine(strsender);
}
}
}
注释是按自己的理解写的,如果理解有误欢迎指正
相关文章推荐
- C# 委托(delegate)事件(event)分析
- C#综合揭秘——深入分析委托与事件
- C#编程利器之四:委托与事件(Delegate and event) (上)
- C#事件(event)解析(转载)
- C#:代表(delegate)和事件(event) (转)
- android事件分析(二)——MOTIONEVENT事件在ONINTERCEPTTOUCHEVENT()、ONTOUCHEVENT()中的传递顺序
- c#中的delegate(委托)和event(事件)
- C#事件(event)解析
- C#事件(event)解析[转]
- (zz)从callback的角度来理解.NET/C# 中的 委托 (delegate)与 事件 (event)
- C#事件(Event)
- EventBus源码解读详细注释(5)事件消息继承性分析 eventInheritance含义
- 终于会用c#中的delegate(委托)和event(事件)了
- C#综合揭秘——深入分析委托与事件
- c#弱事件(weakEvent)
- 【转】Android笔记:触摸事件的分析与总结----Touch事件分发方法dispatchTouchEvent()源码分析
- C#:代表(delegate)和事件(event)
- [转]C#事件(event)解析
- C#综合揭秘——深入分析委托与事件(下)
- 从callback的角度来理解.NET/C# 中的 委托 (delegate)与 事件 (event)