c#事件实例二
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c#事件实例二,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2179字,纯文字阅读大概需要4分钟。
内容图文
![c#事件实例二](/upload/InfoBanner/zyjiaocheng/1332/32c5f92c4d464356adfcd8b45f077f87.jpg)
c#事件实例二
事件驱动程序与过程式程序最大的不同就在于,程序不再不停地检查输入设备,而是呆着不动,等待消息的到来,每个输入的消息会被排进队列,等待程序处理它。如果没有消息在等待,
则程序会把控制交回给操作系统,以运行其他程序。
操作系统只是简单地将消息传送给对象,由对象的事件驱动程序确定事件的处理方法。操作系统不必知道程序的内部工作机制,只是需要知道如何与对象进行对话,也就是如何传递消息。
先来看看事件编程有哪些好处。
1.使用事件,可以很方便地确定程序执行顺序。
2.当事件驱动程序等待事件时,它不占用很多资源。
3.事件简化了编程。
事件(event)
我们可以把事件编程简单地分成两个部分:事件发生的类(书面上叫事件发生器)和事件接收处理的类。事件发生的类就是说在这个类中触发了一个事件,但这个类并不知道哪个个对象或方法将会加收到并处理它触发的事件。所需要的是在发送方和接收方之间存在一个媒介。这个媒介在.NET Framework中就是委托(delegate)。在事件接收处理的类中,我们需要有一个处理事件的方法。好了,我们就按照这个顺序来实现一个捕获键盘按键的程序,来一步一步说明如何编写事件应用程序。
namespace EventLearn001 { /* 因为在我们键盘按键事件中要包含按键信息,所以要派生一个KeyEventArgs类,来保存按键信息,好让后面知道按了哪个键 * */ internal class KeyEventArgs : EventArgs { private char keyChar; //私有字段public KeyEventArgs(char keyChar) : base() { this.keyChar = keyChar; } publicchar KeyChar //公开属性 { get { return keyChar; } } } //再创建一个事件发生的类keyInputMonitor,这个类用于监控键盘的输入并处罚一个事件;internalclass KeyInputMonitor { //创建一个委托,返回类型为Void,两个参数publicdelegatevoid KeyDownHandler(Object sender, KeyEventArgs e); //创建的委托和特定事件关联,publicevent KeyDownHandler KeyDown; publicvoid Run() { bool finished = false; do { Console.WriteLine("Input a char"); string response = Console.ReadLine(); char responseChar = (response == "")?‘‘:char.ToUpper(response[0]); switch (responseChar) { case‘x‘: finished = true; break; default: //得到按键信息的参数 KeyEventArgs args = new KeyEventArgs(responseChar); //出发事件 KeyDown(this,args); break; //KeyDown( this, KeyEventArgs );一句,这就是触发事件的语句,并将事件交由KeyDownHandler这个委托来处理, //委托指定事件处理方法去处理事件, //这就是事件接收方的类的事情了。 //参数this是指触发事件的对象就是本身这个对象,keyEventArgs包含了按键信息 } } while (!finished); } } //最后创建一个事件接收方的类,这个类先产生一个委托实例, //再把这个委托实例添加到产生事件对象的事件列表中去,这个过程又叫订阅事件。然后提供一个方法回显按键信息。internalclass EventReceiver { public EventReceiver(KeyInputMonitor monitor) { monitor.KeyDown += onKeyDown; } privatevoid onKeyDown(Object sender, KeyEventArgs e) { KeyInputMonitor obj = (KeyInputMonitor)sender;//可以将他强制转化成其他使用的内; Console.WriteLine("Capture key {0}",e.KeyChar); } } class Program { staticvoid Main(string[] args) { //实例化一个事件发送器; KeyInputMonitor monitor = new KeyInputMonitor(); //实例化一个接受器 EventReceiver eventReceiver = new EventReceiver(monitor); monitor.Run(); } } }
原文:http://www.cnblogs.com/mc67/p/5076154.html
内容总结
以上是互联网集市为您收集整理的c#事件实例二全部内容,希望文章能够帮你解决c#事件实例二所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。