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

C#事件

阅读更多
■事件:事件是一种函数回调机制,它通过委托来实现函数回调。
使用事件之前,首先在需要上报的类中声明一个事件,通常包含两个步骤:
(1)定义一个委托类型(EventHandler)表示时间处理函数的类型
(2)在类中用关键字event声明一个EventHandler类型的事件,事件同样具有访问性,通常为public

delegate void MyEventHandler(Object sender,EventArgs e)
class EventClass{
    public event MyEventHandler MyEvent;
}
■注册和注销事件
一个类的使用者需要处理类的事件,通常需要3个步骤:
(1)为要处理的事件增加处理函数
(2)将事件处理函数通过+=运算符注册到要处理的事件
(3)处理完成后,通过-=运算符注销不需要的事件处理函数


<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace EventDelegate
{
    delegate 
void MyEventHandler(Object sender,EventArgs e);
    
class EventClass {
        
public event MyEventHandler MyEvent;
        
protected void OnMyEvent(EventArgs e) {
            System.Console.WriteLine(
"EventClass:Ready to fire a MyEvent");
            
if (this.MyEvent != null) {
                System.Console.WriteLine(
"EventClass:fire a MyEvent");
                
this.MyEvent(this, e);
            }
        }
        
public void FireEvent() {
            
this.OnMyEvent(EventArgs.Empty);
        }
    }
    
class Program
    {
        
static void GetAEvent(object sender, EventArgs e) {
            System.Console.WriteLine(
"GetAEvent:Get a Event EventClass.MyEvent");
        }
        
static void Main(string[] args)
        {
            EventClass eventClass 
= new EventClass();
            eventClass.MyEvent 
+= new MyEventHandler(GetAEvent);
            eventClass.FireEvent();
            eventClass.MyEvent 
-= new MyEventHandler(GetAEvent);
            eventClass.FireEvent();
            System.Console.ReadLine();
        }
    }
}

运行结果:
EventClass:Ready to fire a MyEvent
EventClass:fire a MyEvent
GetAEvent:Get a Event EventClass.MyEvent
EventClass:Ready to fire a MyEvent



分享到:
评论

相关推荐

    c#事件机制归纳,c#事件机制归纳,c#事件机制归纳

    C# 事件机制归纳 C# 事件机制是指在 C# 编程语言中实现事件处理的机制,包括委派、事件和事件处理过程。以下是对 C# 事件机制的详细归纳: 一、委派 委派是指一种特殊的方法签名,可以将方法作为参数传递,用于...

    C#事件实例,C#事件实例,C#事件实例

    下面将详细介绍C#事件的概念、特点、如何声明、订阅和触发事件。 一、事件的概念 事件是对象状态改变的一种通知机制,它封装了特定操作的结果,当这个操作发生时,可以通知其他部分的代码。在C#中,事件是委托类型...

    C#事件(event)使用方法详解

    C#事件(event)使用方法详解 事件(event)是C#中的一种机制,允许对象在发生某些情况时通知其他对象。事件(event)使用方法详解将从概念、使用方法、事件编程的优点、事件与委托的关系、事件的实现等方面进行讲解。 ...

    c#事件提醒器小程序(附源码)

    《C#事件提醒器小程序开发详解》 C#事件提醒器小程序是一款基于C#编程语言设计的日程管理工具,它能够在指定的时间点自动弹出窗口提醒用户,帮助人们更好地管理和规划日常生活与工作。该程序利用了.NET Framework的...

    简单的C#事件使用DEMO(详细的注释+简单易懂的例子)

    这个“简单的C#事件使用DEMO”是一个很好的起点,帮助初学者理解事件的工作原理和如何在实践中应用。下面将详细解释相关知识点。 1. **事件的概念**: 事件是类的成员,它表示特定状态的改变或操作的发生。事件的...

    C# 事件中心,一个简单的事件注册调用管理功能

    在C#编程中,事件是对象之间通信的一种方式,它允许对象向其他对象发送通知,而无需知道接收方的具体信息。事件中心是一个设计模式,用于管理和协调这些事件的注册、注销和触发。在这个简单的事件注册调用管理功能中...

    C#事件Demo

    在这个"C#事件Demo"中,我们将深入探讨如何创建和使用自定义事件,以及它们如何与事件处理程序交互。 首先,我们需要理解事件的基本组成部分:事件声明、事件发布者和事件订阅者。事件声明通常在类的私有部分完成,...

    C#事件和委托定义与使用(有两个很形象的例子)

    本文将深入探讨C#中的两个关键概念:事件和委托,并通过实例进行详细解析,帮助初学者更好地理解和运用。 首先,我们来了解什么是委托。在C#中,委托是一种类型,它代表了方法的引用,类似于函数指针。委托可以被视...

    Event Bus C# 事件总线

    在C#编程中,事件总线(Event Bus)是一种设计模式,它允许应用程序的不同组件之间进行松耦合的通信。这种模式特别适用于大型项目或微服务架构,因为...这个简单的C#事件总线实例是学习和理解这一概念的一个好起点。

    C#中事件委托订阅发布模式

    下面是一个简单的C#事件示例: ```csharp using System; // 发布者类 public class Publisher { // 定义事件,使用EventHandler委托 public event EventHandler MyEvent; // 触发事件的方法 public void ...

    c#事件的三个实例。简单的例题能帮你更容易理解事件的知识。

    C#事件是.NET框架中的一种重要特性,它用于在对象之间建立松散耦合的通信机制。事件允许一个对象(事件发布者)通知其他对象(事件订阅者)发生了某些特定的事情,而无需订阅者知道发布者的具体实现细节。在C#中,...

    C#事件系统(接口跟AS3差不多的)

    在这个主题中,我们将深入探讨C#事件系统的概念、工作原理以及如何在实际开发中使用它们。 首先,让我们定义事件的基本概念。事件是一种特殊的成员,由一个对象(源对象)发布,当特定条件满足或某个动作发生时,...

    一些C#线程、事件及委托实例

    - **事件模型**:C#事件基于.NET框架的事件模型,包括`event`关键字、`EventHandler`委托和`EventArgs`类。 - **订阅和取消订阅**:使用`+=`运算符订阅事件,`-=`运算符取消订阅。事件处理方法通常符合`void ...

    C#版本EventBus事件总线实例源码(经典)

    2. **C#事件机制**: 在C#中,事件是基于委托(Delegate)的。委托可以被视为一种类型安全的方法指针,允许我们传递方法作为参数或者存储在变量中。事件通常包含一个或多个委托实例,用于触发特定行为。事件的声明...

    C#事件监视变量变化

    C#事件监视变量变化,事件推送机制,用于变量绑定场景,后台出发前台更新操作

    C# 事件及响应方法

    C#语言自C/C++演变而来。它是现代、简单、完全面向对象和类型安全的。C#语言是微软公司针对.Net平台才推出来的一门新...那么在C#中,是怎样声明事件并为事件添加响应方法的呢?下面的文章对此为大家作了详细的讲述。

    一个C#事件程序源码

    这个"一个C#事件程序源码"的示例就是一个典型的事件处理机制的实践,主要涉及到以下几个关键概念和技术: 1. **事件(Event)**:在C#中,事件是一种特殊的委托类型,它限制了订阅和触发事件的代码。事件通常由发布...

    C#事件的使用案例 c#经典案例.pdf

    在这个C#事件的使用案例中,我们看到一个典型的WinForms应用程序,用于管理询价记录和报价记录。当用户在编辑页面(FrmEnquiryEdit)新增询价记录并保存时,系统需要将新记录实时反映到主界面(FrmEnquiry)上。这个过程...

    C#事件使用Demo(类内和类间)

    C#事件使用Demo(类内和类间),代码含有详细注释;类内是直接刷新FormMain UI,类间是Set窗体刷新FormMain UI /// /// 定义委托类型 /// public delegate void DelegateMainUI(); /// /// 定义委托事件 /// ...

    C#事件传参

    这个"C#事件传参"的Demo就是为了演示如何在不同的C#窗体之间通过事件来传递数据,实现更加灵活的交互。 首先,我们需要理解事件的基本概念。在C#中,事件是基于委托(Delegate)的,委托可以视为指向方法的引用,...

Global site tag (gtag.js) - Google Analytics