`
Jacken_wang
  • 浏览: 14497 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

C#事件机制学习笔记

    博客分类:
  • 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[0]);

                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);
        }
    }
}

分享到:
评论

相关推荐

    C#的Sql server学习笔记

    C#怎样实现连接和操作SQL Server数据库以及实现连接的锁机制等。这SQL Server内容有来自互联网的一些帖子,希望能过。

    C#高级编程,学习笔记

    若是单纯以概念来说,你可以把.net当做一个工作平台一般,它是一个开发环境的...等应用程式一个共通的平台,若是要了解深一点,则再去了解其运作的相关机制那是有助于你利用它来开发.C#和.NET主要是应用在网际网路的。

    中美 IT 培训 C# Asp.net 全套笔记1

    数据库知识和 SQL Server 2000 (40课时) 讲授数据库的基本知识和SQL Server 2000, 讲授数据库的设计和优化,学习T-SQL 和数据库编程,学习存储过程(stored procedure)和触发机制(trigger). 掌握 SQL Server 2000,...

    中美 IT 培训 C# Asp.net 笔记3

    数据库知识和 SQL Server 2000 (40课时) 讲授数据库的基本知识和SQL Server 2000, 讲授数据库的设计和优化,学习T-SQL 和数据库编程,学习存储过程(stored procedure)和触发机制(trigger). 掌握 SQL Server 2000,...

    C#中面向对象编程机制之多态学习笔记

    主要介绍了C#中面向对象编程机制之多态学习笔记,本文总结了个人对多态的理解以及接口多态、继承多态等内容,并给出了代码示例,需要的朋友可以参考下

    net学习笔记及其他代码应用

    24.在C#中,string str = null 与 string str = “” 请尽量使用文字或图象说明其中的区别。 答:string str = null 是不给他分配内存空间,而string str = \"\" 给它分配长度为空字符串的内存空间。 25.请详述在...

    C#中面向对象编程机制之继承学习笔记

    主要介绍了C#中面向对象编程机制之继承学习笔记,本文给出一个简单子实例讲解C#中的继承,并讲解了一些C#继承的知识技巧,需要的朋友可以参考下

    C#.NET学习笔记5 C#中的条件编译

    条件编译是C#比Java多出的东西,但我跟前辈请教后,他们都说条件编译在实际的项目开发中不怎么使用.鉴于是新内容,我还是做做笔记,理解一下好了. 条件编译属于编译预处理的范畴,它能让我们通过条件编译的机制,将部分...

    中美 IT 培训 C# Asp.net 笔记2

    数据库知识和 SQL Server 2000 (40课时) 讲授数据库的基本知识和SQL Server 2000, 讲授数据库的设计和优化,学习T-SQL 和数据库编程,学习存储过程(stored procedure)和触发机制(trigger). 掌握 SQL Server 2000,...

    C#案例教程.part1.pdf

    通过子任务的学习,读者能掌握C/S模式的管理信息系统的设计开发流程、事件驱动编程机制、C#Windows编程技术、数据库访问技术、报表设计以及安装与部署Windows程序的全过程。全书共10个项目,分别为随笔记系统分析与...

    C#中的lock、Monitor、Mutex学习笔记

    为了保护应用程序的资源不被破坏,为多线程程序提供了三种加锁的机制,分别是:Monitor类、Lock关键字和Mutex类。 1. lock lock实现的功能是:使后进入的线程不会中断当前的线程,而是等待当前线程结束后再继续执行...

    S2深入.Net平台和C#编程《指导学习三》

    使用继承机制,实现笔记本计算机和台式计算机的共同管理

    C#程序员入门学习微信小程序的笔记

    因为工作需要,最近学习了一下微信小程序,在此分享一下大概的流程。 强烈建议大家先去看微信小程序简易教程:点我进入 起步 客户端打开小程序的时候,就将代码包下载到本地进行解析,首先找到了根目录的 app.json ...

    一个简单的自动化测试架构的实现(C#)

    幸好自己有写学习笔记的习惯,整理一下,贴出来,以备忘。特性会作为元数据嵌入到程序集,通过反射机制能够得到这些元数据信息。程序员可以自己定义特性,对特性进行某种格式的定义,并利用特性来影响自己编写代码...

    asp.net知识库

    VS2005 ASP.NET本地化学习笔记&感受 在自定义Server Control中捆绑JS文件 Step by Step 深度解析Asp.Net2.0中的Callback机制 使用 Web 标准生成 ASP.NET 2.0 Web 站点 ASP.NET 2.0基于SQLSERVER 2005的aspnetdb.mdf...

    MyCode:我的代码宝

    MyCode AlgorithmAndDataStructure 数据结构和算法作为计算机基础,还比较重要。虽然挺难,但是实际总结学习后...CLR_Via_CSharp记录了所有实验代码和个人学习笔记。 TheBeautifyOfDotNet,也是一本不错的书籍《.Net之

    值类型与引用类型理论内容.part01.rar

    ASP.NET培训资料(笔记版)(AJAX,C#,JavaScript,SQL) 详细的资料 三个月的课程录像+资料笔记(花了一万六千块的培训资料超值【19G的经典内容】 认真学习后包你能成为优秀的.net程序员 <br>(注明:不是...

    值类型与引用类型理论内容.part05.rar

    C#,JavaScript,SQL) <br>我将不定期发布,直至所有课程完毕 <br>详细的资料 三个月的课程录像+资料笔记(花了一万六千块的培训资料超值【19G的经典内容】 认真学习后包你能成为优秀的.net程序员 ...

Global site tag (gtag.js) - Google Analytics