`

C# 事件 示例 源代码

 
阅读更多
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleAppEventPro
{
    //0.事件触发类
    public class mm
    {
        //1.定义事件参数类
        public class nn : EventArgs
        {
            public readonly char aa;
            public nn(char Inputaa)
            {
                aa = Inputaa;
            }
        }
            //2.定义委托delegate
            public delegate void weituo(Object sender,nn e);

            //3.用Event关键字声明事件对象
            public event weituo TestEvent;

            //4.事件触发方法
            protected virtual void OnTestEvent(nn e)
            {
                if (TestEvent != null)
                {
                    TestEvent(this, e);
                }
            }
            //5.引发方法
            public void RaiseEvent(char aa)
            {
                nn e = new nn(aa);
                OnTestEvent(e);
            }
    }

    //侦听事件的类
    public class zz
    {
        //1.定义处理事件的方法,他与声明事件的delegate具有相同的参数和返回值类型——》事件处理方法
        public void KeyPressed(object sender,mm.nn e)
        {
            Console.WriteLine("发送者为:{0},所按的键为:{1}",sender,e.aa);
        }

        //2.订阅事件
        public void Subscribe(mm eventSource)
        {
            eventSource.TestEvent += new mm.weituo(KeyPressed);
        }

        //3.取消订阅
        public void UnSubscribe(mm eventSource)
        {
            eventSource.TestEvent -= new mm.weituo(KeyPressed);
        }
    }

    public class Test
    {
        public static void Main()
        {
            //创建事件源对象
            mm es = new mm();
            //创建侦听对象
            zz el = new zz();

           //订阅事件
            Console.WriteLine("开始订阅事件");
            el.Subscribe(es);

            //引发事件
            Console.WriteLine("输入一个字符,再按Enter键");

            string s = Console.ReadLine();
            es.RaiseEvent(s.ToCharArray()[0]);
            //取消订阅事件
            Console.WriteLine("开始取消订阅事件!");
            el.UnSubscribe(es);
            //引发事件
            Console.WriteLine("输入一个字符,再按Enter键");
            s = Console.ReadLine();
            es.RaiseEvent(s.ToCharArray()[0]);
            Console.ReadKey();
        }
    }

}
分享到:
评论

相关推荐

    明日科技《C#示例源代码》(5-8)

    注意:本源代码共有20章节,分五部分上传,名称分别为:明日科技《C#示例源代码》(1-4)、明日科技《C#示例源代码》(1-4)、明日科技《C#示例源代码》(5-8)、明日科技《C#示例源代码》(9-12)、明日科技《C#...

    C#.NET,集合示例源代码

    C#.NET,集合示例源代码C#.NET,集合示例源代码C#.NET,集合示例源代码

    明日科技《C#示例源代码》(9-12)

    注意:本源代码共有20章节,分五部分上传,名称分别为:明日科技《C#示例源代码》(1-4)、明日科技《C#示例源代码》(1-4)、明日科技《C#示例源代码》(5-8)、明日科技《C#示例源代码》(9-12)、明日科技《C#...

    C#180滚动条示例 源代码

    这个“C#180滚动条示例 源代码”压缩包可能包含了关于如何在Windows Forms或WPF应用中实现滚动条功能的详细教程和实例代码。下面,我们将深入探讨滚动条在C#中的工作原理和常见用法。 1. **滚动条控件类型**: - `...

    C#ShellExecute示例源代码

    下面我们将详细讨论`ShellExecute`的使用方法、应用场景以及相关的源代码示例。 首先,`ShellExecute`方法在`System.Diagnostics.ProcessStartInfo`类中并不直接提供,而是通过Windows API函数`ShellExecuteW`来...

    C#串口助手源代码(共六个打包下载)

    首先,让我们来看看标题提到的“C#串口助手源代码”。源代码是程序的基础,它包含了编写应用程序的所有指令和逻辑。在这里,我们拥有两个不同类型的源代码版本:基于WinForm和基于WPF。WinForm是.NET Framework中...

    学习C# 最经典的示例(源代码)学习C# 最经典的示例(源代码)

    C# HELLOW示例,YIELD示例,XML注释示例,不安全代码示例,OLEDB示例,版本控制示例,线程示例,数组示例,属性示例,可空类型示例,事件示例,代理示例,类库示例,COM平台示例,安全性示例,结构示例,特性示例,运算符重载示例,命...

    明日科技《C#示例源代码》(17-20)

    注意:本源代码共有20章节,分五部分上传,名称分别为:明日科技《C#示例源代码》(1-4)、明日科技《C#示例源代码》(1-4)、明日科技《C#示例源代码》(5-8)、明日科技《C#示例源代码》(9-12)、明日科技《C#...

    c#电子相册源代码含数据库

    在本项目中,"C#电子相册源代码含数据库"是一个典型的桌面应用程序示例,它展示了如何结合C#语言和数据库技术来创建一个功能丰富的个人或家庭相册管理系统。 首先,我们来看看C#电子相册的核心功能。源代码主要由...

    明日科技《C#示例源代码》(13-16)

    注意:本源代码共有20章节,分五部分上传,名称分别为:明日科技《C#示例源代码》(1-4)、明日科技《C#示例源代码》(1-4)、明日科技《C#示例源代码》(5-8)、明日科技《C#示例源代码》(9-12)、明日科技《C#...

    C# Modbus TCP 源代码

    6. **示例应用程序**:为了便于用户测试和使用,源代码可能还包括一个简单的C#应用程序,展示如何使用这些Modbus通信功能。 7. **类库设计**:良好的C# Modbus库应该设计成可复用的组件,具有清晰的接口,方便其他...

    C#PPI协议源代码

    在本文中,我们将深入探讨"C#PPI协议源代码"这一主题,它是针对Siemens S7-200 PLC(可编程逻辑控制器)的一种通信方案。S7-200 PLC是西门子推出的一款小型工业自动化设备,广泛应用于各种自动化系统中。C#(Sharp)...

    精通c#5.0示例源代码

    包含c#大部分的功能的示例。从基础到网络、互操作……。使用visualstudio打开就可以。

    C#开发CAD2008简单源代码

    而`C#开发CAD2008简单源代码`文件很可能是整个项目的源代码集合,包含了与AutoCAD 2008接口交互的核心逻辑。 学习这些源代码,开发者可以了解以下几个关键知识点: 1. **AutoCAD .NET API**:理解AutoCAD如何通过...

    水晶报表入门示例源代码(C# WinForm)

    这个入门示例源代码提供了一种简单的方法,帮助开发者理解和掌握如何在C#环境下利用水晶报表生成、显示和打印报告。 在C# WinForm中集成水晶报表,首先需要安装水晶报表的开发组件,例如通过NuGet包管理器添加`...

    C#生成条形码源代码

    "C#生成条形码源代码" C#生成条形码示例代码中,我们可以看到使用了ASP.net框架和C#语言来生成条形码。该示例代码使用了System、System.Data、System.Configuration、System.Web、System.Web.Security、System.Web....

    C#局域网聊天源代码

    通过分析这个C#局域网聊天源代码,开发者不仅可以学习到基本的网络通信知识,还能了解到如何在实际项目中结合多线程、事件驱动、UI设计等多个方面,提升自己的编程能力。同时,这个源代码也可以作为模板,用于开发更...

    C#文件浏览器源代码示例

    在本文中,我们将深入探讨基于C#的文件浏览器源代码示例。这个小项目是一个非常适合初学者学习C#基础知识和Windows应用程序开发的实践案例。它提供了清晰的代码结构和详尽的注释,有助于理解如何在C#环境中实现文件...

    C#入门经典第五版示例源代码

    本资源"《C#入门经典第五版》示例源代码"包含了该书籍中用于教学的实例,这些实例覆盖了C#的基础到高级特性,对于初学者而言是极好的学习材料。 在C#的学习过程中,了解基础语法是至关重要的。这包括变量声明、数据...

    C#课程设计源代码

    在本资源中,你将找到一系列C#编程的课程设计示例,这些示例源代码是学习和理解C#编程语言及其应用的经典实例。以下是每个项目的核心知识点: 1. **WEB浏览器**: - **ASP.NET框架**:C#与ASP.NET结合用于构建Web...

Global site tag (gtag.js) - Google Analytics