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();
}
}
}
分享到:
相关推荐
注意:本源代码共有20章节,分五部分上传,名称分别为:明日科技《C#示例源代码》(1-4)、明日科技《C#示例源代码》(1-4)、明日科技《C#示例源代码》(5-8)、明日科技《C#示例源代码》(9-12)、明日科技《C#...
注意:本源代码共有20章节,分五部分上传,名称分别为:明日科技《C#示例源代码》(1-4)、明日科技《C#示例源代码》(1-4)、明日科技《C#示例源代码》(5-8)、明日科技《C#示例源代码》(9-12)、明日科技《C#...
C#.NET,集合示例源代码C#.NET,集合示例源代码C#.NET,集合示例源代码
注意:本源代码共有20章节,分五部分上传,名称分别为:明日科技《C#示例源代码》(1-4)、明日科技《C#示例源代码》(1-4)、明日科技《C#示例源代码》(5-8)、明日科技《C#示例源代码》(9-12)、明日科技《C#...
这个“C#180滚动条示例 源代码”压缩包可能包含了关于如何在Windows Forms或WPF应用中实现滚动条功能的详细教程和实例代码。下面,我们将深入探讨滚动条在C#中的工作原理和常见用法。 1. **滚动条控件类型**: - `...
下面我们将详细讨论`ShellExecute`的使用方法、应用场景以及相关的源代码示例。 首先,`ShellExecute`方法在`System.Diagnostics.ProcessStartInfo`类中并不直接提供,而是通过Windows API函数`ShellExecuteW`来...
首先,让我们来看看标题提到的“C#串口助手源代码”。源代码是程序的基础,它包含了编写应用程序的所有指令和逻辑。在这里,我们拥有两个不同类型的源代码版本:基于WinForm和基于WPF。WinForm是.NET Framework中...
C# HELLOW示例,YIELD示例,XML注释示例,不安全代码示例,OLEDB示例,版本控制示例,线程示例,数组示例,属性示例,可空类型示例,事件示例,代理示例,类库示例,COM平台示例,安全性示例,结构示例,特性示例,运算符重载示例,命...
注意:本源代码共有20章节,分五部分上传,名称分别为:明日科技《C#示例源代码》(1-4)、明日科技《C#示例源代码》(1-4)、明日科技《C#示例源代码》(5-8)、明日科技《C#示例源代码》(9-12)、明日科技《C#...
在本项目中,"C#电子相册源代码含数据库"是一个典型的桌面应用程序示例,它展示了如何结合C#语言和数据库技术来创建一个功能丰富的个人或家庭相册管理系统。 首先,我们来看看C#电子相册的核心功能。源代码主要由...
6. **示例应用程序**:为了便于用户测试和使用,源代码可能还包括一个简单的C#应用程序,展示如何使用这些Modbus通信功能。 7. **类库设计**:良好的C# Modbus库应该设计成可复用的组件,具有清晰的接口,方便其他...
在本文中,我们将深入探讨"C#PPI协议源代码"这一主题,它是针对Siemens S7-200 PLC(可编程逻辑控制器)的一种通信方案。S7-200 PLC是西门子推出的一款小型工业自动化设备,广泛应用于各种自动化系统中。C#(Sharp)...
包含c#大部分的功能的示例。从基础到网络、互操作……。使用visualstudio打开就可以。
而`C#开发CAD2008简单源代码`文件很可能是整个项目的源代码集合,包含了与AutoCAD 2008接口交互的核心逻辑。 学习这些源代码,开发者可以了解以下几个关键知识点: 1. **AutoCAD .NET API**:理解AutoCAD如何通过...
这个入门示例源代码提供了一种简单的方法,帮助开发者理解和掌握如何在C#环境下利用水晶报表生成、显示和打印报告。 在C# WinForm中集成水晶报表,首先需要安装水晶报表的开发组件,例如通过NuGet包管理器添加`...
"C#生成条形码源代码" C#生成条形码示例代码中,我们可以看到使用了ASP.net框架和C#语言来生成条形码。该示例代码使用了System、System.Data、System.Configuration、System.Web、System.Web.Security、System.Web....
DSP28069 CAN升级方案:集成boot和app示例源代码工程,实现C#上位机升级及兼容CAN盒选择,DSP28069的CAN升级方案:基于Boot源代码与用户App示例的升级流程,上位机C#升级及DSP工程CCS10.3.1使用说明,兼容低成本CAN盒...
通过分析这个C#局域网聊天源代码,开发者不仅可以学习到基本的网络通信知识,还能了解到如何在实际项目中结合多线程、事件驱动、UI设计等多个方面,提升自己的编程能力。同时,这个源代码也可以作为模板,用于开发更...
《Visual Studio 2008 C# 官方示例教程及源代码解析》 Visual Studio 2008作为微软公司推出的强大开发环境,为C#编程语言提供了丰富的支持。这款工具集成了代码编辑、调试、项目管理等功能,极大地提高了开发效率。...
在本文中,我们将深入探讨基于C#的文件浏览器源代码示例。这个小项目是一个非常适合初学者学习C#基础知识和Windows应用程序开发的实践案例。它提供了清晰的代码结构和详尽的注释,有助于理解如何在C#环境中实现文件...