`

事件的使用 代码示例

阅读更多

 

摘自:C#程序设计教程 朱毅华 第134页

 

using System;
using System.Collections.Generic;
using System.Text;

namespace t_Event
{

    //--定义事件包含数据

    class MyEventArgs : EventArgs
    {
        private string strText;

        public MyEventArgs(string StrText)  //--构造函数
        {
            this.strText = StrText;

        }

        public string StrText
        {
            get { return strText; }
            set { strText = value; }
        }

    }

    //--发布事件的类
    class EventSource
    {
        MyEventArgs EvArgs = new MyEventArgs("发布事件");

        //定义委托
        public delegate void EventHandler(object from, MyEventArgs e);

        //定义事件
        public event EventHandler TextOut;

        //--激活事件的方法
        public void TriggerEvent()
        {
            if (TextOut != null)  //--不为空,表示有用户订阅
            {
                TextOut(this, EvArgs);
            }
        }
 

    }

    //--订阅事件的类
    class TestApp
    {
        //--处理事件的静态方法
        public static void CatchEvent(object from, MyEventArgs e)
        {
            Console.WriteLine("调用方法CatchEvent");
            Console.WriteLine("CatchEvent:{0}",e.StrText);
        }

        //处理事件的方法
        public void InstanceCatch(object from, MyEventArgs e)
        {
            Console.WriteLine("调用方法InstanceCatch");
            Console.WriteLine("InstanceEvent:{0}", e.StrText);
        }

        static void Main(string[] args)
        {

            EventSource evsrc = new EventSource();

            //订阅事件
            evsrc.TextOut += new EventSource.EventHandler(CatchEvent);

            evsrc.TriggerEvent();

            Console.WriteLine("1 -------------------------");

            //取消事件
            evsrc.TextOut -= new EventSource.EventHandler(CatchEvent);

            evsrc.TriggerEvent();
            Console.WriteLine("取消事件后,这次什么都没做");
            Console.WriteLine("2 -------------------------");

            TestApp theApp = new TestApp();
            evsrc.TextOut += new EventSource.EventHandler(theApp.InstanceCatch);

            evsrc.TriggerEvent();

            Console.WriteLine("3 -------------------------");

            Console.ReadKey();
       
        }

    }


}

分享到:
评论

相关推荐

    委托和事件代码示例完整版

    在这里,我们将深入探讨这两个概念,并通过一个实际的代码示例来帮助你理解它们的工作原理。 **委托(Delegates)** 1. **定义与类型**:委托在.NET中是一种引用类型,它类似于函数指针,可以存储对方法的引用。...

    c#记事本源代码示例

    通过研究这个"C#记事本源代码示例",你可以深入理解C#的基本语法、Windows Forms的使用,以及如何实现一个简单的用户交互应用。同时,这也是一次学习面向对象编程、事件驱动机制以及文件操作的实践机会。当你逐步...

    VC事件钩子示例代码

    通过深入理解和实践这些示例代码,开发者可以更好地掌握系统级事件的处理,提升软件的交互性和功能性。在实际开发中,需要注意的是,过度使用或不当使用钩子可能导致性能问题,因此应当谨慎选择何时何地使用事件钩子...

    领域模型代码示例

    在本示例中,"领域模型代码示例"是一个用于展示DDD实践的演示项目,帮助开发者理解和应用DDD原则。 领域模型是DDD的核心部分,它是对特定业务领域的概念、规则和行为的抽象表示。一个领域模型通常包含实体...

    事件与委托工程示例代码

    本文将深入探讨这两个概念,并结合提供的代码示例进行解释。 首先,我们来理解什么是事件。在C#中,事件是一种特殊的成员,它允许一个对象(发布者)通知其他对象(订阅者)发生了特定的动作或状态改变。这种方式被...

    领域事件示例代码

    在这个"领域事件示例代码"项目中,我们可以期待看到如何在C#环境中实现领域事件。C#作为.NET框架的主要编程语言,提供了丰富的库和特性来支持领域事件的处理。下面我们将深入探讨领域事件的几个关键方面: 1. **...

    mina客户端简单代码示例

    标题中的"mina客户端简单代码示例"意味着我们将探讨如何使用Mina框架编写一个基础的客户端程序,该程序能够连接到服务器并发送数据。描述指出,运行这个客户端程序(minaTestClient)会展示一个窗口,用户可以通过...

    Java_欢迎来到AWS代码示例存储库此仓库包含AWS文档中使用的代码示例AWS SDK开发人员指南和更多有关更多信息.zip

    在本存储库中,"Java_欢迎来到AWS代码示例存储库此仓库包含AWS文档中使用的代码示例AWS SDK开发人员指南和更多有关更多信息.zip" 是一个针对Java开发者的重要资源,它提供了亚马逊网络服务(Amazon Web Services, ...

    WPF纯MVVM事件绑定+事件参数 完美示例

    标题中的“WPF纯MVVM事件绑定+事件参数 完美示例”意味着我们将学习如何在不违反MVVM原则的情况下处理控件事件,以及如何传递和使用事件参数。 首先,要实现事件绑定,我们需要引用`System.Windows.Interactivity`...

    Angular之toDoList的实现代码示例

    Angular之toDoList的实现代码示例主要介绍了如何使用Angular框架来实现一个基本的toDoList应用程序。该实现代码示例提供了一个基本的toDoList组件,包括添加任务、删除任务、编辑任务、完成任务、排序任务、筛选任务...

    OpenCV鼠标事件示例代码

    这是一段使用OpenCV库进行鼠标事件处理的示例代码。代码中通过创建窗口和设置鼠标回调函数,实现了在图像上单击左键或右键时分别输出相应的坐标信息。通过运行这段代码,您可以学习如何在OpenCV中使用鼠标事件处理...

    前端代码示例

    在IT行业中,前端开发是构建Web应用程序不可或缺的一部分,它主要关注用户通过浏览器或Web应用程序所看到和交互的部分。...总的来说,这个代码示例集合对于任何想要提升前端技能的人来说都是宝贵的资源。

    jQuery星级评分代码示例

    总的来说,jQuery星级评分代码示例是一个融合了HTML、CSS和JavaScript技术的互动元素,通过jQuery库简化了事件处理和DOM操作,为用户提供直观且易于使用的评价体验。通过深入学习和实践,开发者可以轻松地将这一功能...

    软件秘籍示例代码

    设计模式并不只是一种抽象的概念,它们通过具体的代码示例得以体现。"设计模式那点事"表明我们将讨论设计模式的各个方面,包括其原理、应用场景以及如何在实际项目中实施。这些模式可以帮助开发者更好地理解和解决...

    委托与事件示例代码

    现在,让我们看一个Windows Forms应用程序的示例,该应用演示了如何使用委托和事件。在这个例子中,我们将创建一个简单的用户界面,当按钮被点击时,会触发一个事件并显示一条消息。 ```csharp using System; using...

    VB.net 常用代码示例

    这个压缩包文件包含了一系列VB.NET编程中的常用代码示例,特别关注了数据操作和用户界面交互。以下是对每个文件名称所代表的知识点的详细解释: 1. **04自定义函数ShowData的实现过程.jpg**:这可能是关于如何创建...

    D3.js的大量代码示例

    这个名为"D3.js的大量代码示例"的资源来源于Scott Murray的著作《Interactive Data Visualization for the Web》。这本书是D3.js学习者的经典教材,它深入浅出地讲解了如何利用D3.js来构建交互式的数据可视化应用。 ...

    安卓demo代码示例

    在安卓开发中,Demo代码示例是学习和理解Android应用开发的重要途径。这些示例代码通常包含了一系列简单但全面的功能实现,旨在帮助开发者快速掌握关键API的使用、UI设计以及程序逻辑构建。在这个"安卓demo代码示例...

Global site tag (gtag.js) - Google Analytics