`
Jacken_wang
  • 浏览: 14666 次
  • 性别: 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);
        }
    }
}

分享到:
评论

相关推荐

    Learning hard C# 学习笔记

    《Learning Hard C# 学习笔记》是一份深入浅出的C#编程教程,旨在帮助初学者快速掌握C#这门强大的编程语言。C#是由微软公司开发的一种面向对象的编程语言,广泛应用于Windows平台、游戏开发(尤其是Unity引擎)、...

    C#-学习笔记

    在深入探讨"C#高级编程"的学习笔记之前,我们先来理解一下C#这门语言的基础。C#(读作"C sharp")是由微软公司开发的一种面向对象的编程语言,主要用于构建Windows应用程序、Web应用以及移动应用。它在.NET框架或...

    经典、简单C#学习笔记

    综上所述,"经典、简单C#学习笔记"涵盖了C#语言从基础到进阶的全面内容,适合初学者入门,也对有一定经验的开发者有参考价值。通过深入理解和实践这些知识点,你将能够熟练掌握C#,并在各种应用场景中游刃有余。

    Visual c#学习笔记

    《Visual C#学习笔记》是一本深入探讨C#编程语言及其在ASP.NET框架下应用的专业教程。这本书旨在为想要掌握C#和ASP.NET技术的读者提供详尽的指导,无论你是初学者还是有一定开发经验的程序员,都能从中受益匪浅。 ...

    C#学习笔记

    根据提供的文件信息,“C#学习笔记”,我们来深入探讨与C#编程语言相关的知识点。C#是一种现代化的、面向对象的编程语言,由微软开发,主要用于Windows平台的应用程序开发,但随着.NET Core和.NET 5等跨平台框架的...

    C#WinForm基础学习笔记

    ### C# WinForm 基础学习笔记 #### 一、WinForm 概念与基本操作 **知识点:** 1. **定义与作用:** - **定义:** WinForm 是 .NET Framework 提供的一种用于创建 Windows 用户界面的工具集。 - **作用:** 可以...

    C#学习阅读笔记

    C#学习阅读笔记 本笔记总结了 C# 语言的基本概念、特点和重要知识点。C# 是一种类型安全的语言,专门用于 .NET Framework,具有强数据类型和面向对象的编程特点。下面是笔记的主要内容: 一、C# 语言概述 * C# 是...

    C#使用手册+C#学习笔记+C#基础教程

    《C#使用手册+C#学习笔记+C#基础教程》是一份综合性的学习资源,适合对C#编程感兴趣的初学者和进阶者。这份压缩包包含了三个核心文档:《C#基础教程-c_实例教程.doc》、《C#使用手册.doc》和《C#学习笔记.doc》,...

    C#学习笔记-C# Study Notes

    【C#学习笔记-C# Study Notes】 这是一份详尽的C#学习资源,旨在帮助初学者深入理解和掌握C#编程语言。这份笔记不仅包含了语言基础,还涵盖了从实际问题出发的学习过程,强调理解而非机械记忆,使得学习更加生动且...

    C#学习笔记(基础篇)

    10. **事件和委托**:C#中的事件机制使得对象间能异步通信,而委托则是事件的基础,它类似于C++的函数指针,可以存储和调用方法。 以上只是C#学习笔记的基础部分,实际学习过程中还会涉及更多高级特性,如匿名方法...

    C#学习笔记(超有价值的)

    本压缩包包含的"C#学习笔记"是一份宝贵的资源,适合初学者和有一定基础的开发者,帮助他们深入理解C#语言的核心概念和实践技巧。 笔记首先可能会介绍C#的基础语法,这是任何编程语言学习的起点。这包括变量定义、...

    10001003 C#中级教程学习笔记和工程.zip

    《C#中级教程学习笔记与工程实践》 C#是一种多范式编程语言,由微软公司为.NET框架设计,广泛应用于软件开发、游戏制作、Web应用等众多领域。本教程面向已经掌握C#基础的学员,旨在提升其在C#编程中的技能水平,...

    c#入门学习笔记

    ### C# 入门学习笔记知识点汇总 #### .NET框架介绍 - **发布时间**:2002年发布了.NET框架的第一个版本1.0。 - **组成部分**:.NET框架主要由两大部分构成: - **基类库(Base Class Library, BCL)**:提供了一...

    C#学习笔记......

    【标题】:C#学习笔记 【描述】:这是一份详尽的C#学习笔记,涵盖了从基础知识到高级特性的全面讲解。笔记内容包括C#语法基础、面向对象编程概念、异常处理、集合与泛型、LINQ查询、多线程编程、Asynchronous编程...

    C# 课堂笔记 C# 课堂笔记

    这组"课堂笔记"涵盖了C#的核心概念和技术,旨在帮助学习者深入理解和掌握这门语言。屏幕截图的添加可能意味着笔记中包含了实际操作的步骤和可视化教程,这对于初学者来说是非常有用的补充。 首先,让我们探讨C#的...

    Winform(C#)实现的学习笔记记录软件

    本项目"Winform(C#)实现的学习笔记记录软件"是一个个人知识管理工具,旨在帮助开发者方便地记录、检索日常学习中的技术要点。 1. Winform基础 - **控件使用**:Winform应用由各种控件组成,如TextBox用于文本输入...

    C# 语法 学习 笔记

    以上就是C#语法学习笔记中涉及的一些核心概念。理解并熟练运用这些概念对于编写高质量的C#代码至关重要。在实际编程中,还会涉及到接口(Interface)、委托(Delegate)、事件(Event)、异常处理(Exception ...

    head first C#学习笔记:如何创建事件

    本学习笔记将深入探讨如何在C#中创建事件,以实现一个棒球模拟系统的例子。在这个系统中,我们将关注投球手、观众和裁判的交互,当输入棒球的轨迹和距离时,这些对象会根据模拟结果做出相应的反应。 首先,理解事件...

    C#快速学习笔记.rar

    这份"C#快速学习笔记"涵盖了C#的基础到高级特性,是学习C#的理想资源。它将多本教程的精华内容进行了整合,旨在帮助学习者高效地掌握C#编程。 在C#的学习过程中,首先会接触到的是基础语法,包括变量、数据类型(如...

Global site tag (gtag.js) - Google Analytics