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#...
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# HELLOW示例,YIELD示例,XML注释示例,不安全代码示例,OLEDB示例,版本控制示例,线程示例,数组示例,属性示例,可空类型示例,事件示例,代理示例,类库示例,COM平台示例,安全性示例,结构示例,特性示例,运算符重载示例,命...
注意:本源代码共有20章节,分五部分上传,名称分别为:明日科技《C#示例源代码》(1-4)、明日科技《C#示例源代码》(1-4)、明日科技《C#示例源代码》(5-8)、明日科技《C#示例源代码》(9-12)、明日科技《C#...
首先,让我们来看看标题提到的“C#串口助手源代码”。源代码是程序的基础,它包含了编写应用程序的所有指令和逻辑。在这里,我们拥有两个不同类型的源代码版本:基于WinForm和基于WPF。WinForm是.NET Framework中...
在本项目中,"C#电子相册源代码含数据库"是一个典型的桌面应用程序示例,它展示了如何结合C#语言和数据库技术来创建一个功能丰富的个人或家庭相册管理系统。 首先,我们来看看C#电子相册的核心功能。源代码主要由...
注意:本源代码共有20章节,分五部分上传,名称分别为:明日科技《C#示例源代码》(1-4)、明日科技《C#示例源代码》(1-4)、明日科技《C#示例源代码》(5-8)、明日科技《C#示例源代码》(9-12)、明日科技《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....
通过分析这个C#局域网聊天源代码,开发者不仅可以学习到基本的网络通信知识,还能了解到如何在实际项目中结合多线程、事件驱动、UI设计等多个方面,提升自己的编程能力。同时,这个源代码也可以作为模板,用于开发更...
在本文中,我们将深入探讨基于C#的文件浏览器源代码示例。这个小项目是一个非常适合初学者学习C#基础知识和Windows应用程序开发的实践案例。它提供了清晰的代码结构和详尽的注释,有助于理解如何在C#环境中实现文件...
本资源"《C#入门经典第五版》示例源代码"包含了该书籍中用于教学的实例,这些实例覆盖了C#的基础到高级特性,对于初学者而言是极好的学习材料。 在C#的学习过程中,了解基础语法是至关重要的。这包括变量声明、数据...
在本资源中,你将找到一系列C#编程的课程设计示例,这些示例源代码是学习和理解C#编程语言及其应用的经典实例。以下是每个项目的核心知识点: 1. **WEB浏览器**: - **ASP.NET框架**:C#与ASP.NET结合用于构建Web...