Visual Studio EventHandler Delegate 和 EventArgs

EventHandler代理 用来表示处理一个没有事件数据(event data)的事件(event)的 方法。

无论何时事件发生时,事件代理就被调用来触发以前事件驱动的其他事件(监听当前事件TCurrentEvent += TListenerEvent)。

public delegate void EventHandler(
	Object sender,    //事件发起者
	EventArgs e       //处理事件数据的对象
)

EventArgs 类是事件变量的基类,提供事件数据类型给某个事件。

System.Object 
  System.EventArgs
    More...

public class EventArgs

The following example shows an event named ThresholdReached that is associated with an EventHandler delegate. The method assigned to the EventHandler delegate is called in the OnThresholdReached method.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace delegrate
{
    class Program
    {
        static void Main(string[] args)
        {
            Counter c = new Counter(new Random().Next(10));
            c.ThresholdReached += c_ThresholdReached;  //声明一个事件监听

            Console.WriteLine("press ‘a‘ key to increase total");
            while (Console.ReadKey(true).KeyChar == ‘a‘)
            {
                Console.WriteLine("adding one");
                c.Add(1);
            }
        }

        static void c_ThresholdReached(object sender, ThresholdReachedEventArgs e)
        {
            Console.WriteLine("The threshold of {0} was reached at {1}.", e.Threshold, e.TimeReached);
            Environment.Exit(0);
        }
    }

    class Counter
    {
        private int threshold;
        private int total;

        public Counter(int passedThreshold)
        {
            threshold = passedThreshold;
        }

        public void Add(int x)
        {
            total += x;
            if (total >= threshold)
            {
                ThresholdReachedEventArgs args = new ThresholdReachedEventArgs();
                args.Threshold = threshold;
                args.TimeReached = DateTime.Now;
                OnThresholdReached(args);          //传输一个 TEventArgs-->ThresholdReachedEventArgs
            }
        }

        protected virtual void OnThresholdReached(ThresholdReachedEventArgs e)
        {
            EventHandler<ThresholdReachedEventArgs> handler = ThresholdReached;  //handle an Event
            if (handler != null)
            {
                handler(this, e);   //触发 c_ThresholdReached
            }
        }

        public event EventHandler<ThresholdReachedEventArgs> ThresholdReached;
    }

    public class ThresholdReachedEventArgs : EventArgs
    {
        public int Threshold { get; set; }
        public DateTime TimeReached { get; set; }
    }
}

  

Visual Studio EventHandler Delegate 和 EventArgs

时间: 2024-10-25 08:02:01

Visual Studio EventHandler Delegate 和 EventArgs的相关文章

使用Visual Studio SDK制作GLSL词法着色插件

使用Visual Studio SDK制作GLSL词法着色插件 我们在Visual Studio上开发OpenGL ES项目时,避免不了写Shader.这时在vs里直接编辑shader就会显得很方便.但是vs默认是不支持GLSL的语法着色的,我们只好自己动手创造.最简单的实现自定义语法着色的方法就是创建一个VSIX插件包,我们只需要安装Visual Studio SDK,使用内置的模版就可以构建一个插件项目. 1. 安装Visual Studio SDK 在http://www.microsof

[转]使用Visual Studio SDK制作GLSL词法着色插件

本文转自(http://www.cnblogs.com/aanbpsd/p/3920067.html) 原作者故意写错了一点东西,这就让那些一点脑筋也不想动的小伙伴得不到想要的结果.我在这里把那些地方纠正过来了. [转]使用Visual Studio SDK制作GLSL词法着色插件 我们在Visual Studio上开发OpenGL ES项目时,避免不了写Shader.这时在vs里直接编辑shader就会显得很方便.但是vs默认是不支持GLSL的语法着色的,我们只好自己动手创造.最简单的实现自定

VB.NET,C#.NET调用Web Service,利用visual studio 的实现方法

在VB.NET调用Web Service提供的服务 技术qq交流群:JavaDream:251572072 下面是一篇文章比较详细,其实具体操作很简单,把Web Service服务地址,利用工具(VS2010),通过添加引用的形式,添加到项目中来就可以应用了. 大家如果这个地方不会操场的话,可以问问我QQ:1606841559 当Web Service已经处于对外提供服务状态,VB.NET就可以通过HTTP"调用"来使用这些服务了.当然前提是要了解Web Service对外提供服务所对

[转]开发Visual Studio风格的用户界面--MagicLibrary使用指南

本文的示例代码为可以从这里下载: 1           概述 微软Visual Studio.NET开发工具推出已经好几年了,这个开发工具一推出就以其易用性和强大功能深受开发者的喜爱.尤其是.NET环境使得不同开发语言如C#.VB.NET以及C++.NET之间的交互变得非常容易.因此涌现了许多在.NET下开发的控件库,可以供不同的开发语言调用.MagicLibrary就是其中比较优秀的一个用于界面设计的控件库,可以用来开发类似.Net Studio这样具有停靠窗口风格的界面.该库的源代码及使用

Visual Studio From &amp; DataBase (1)

有门课叫做数据库课设. 我的选题:...不谈也罢.... 编程语言:C# 开发环境:Visual Studio 2015 Com. 数据库:Microsoft Sql Server 首先,得会数据库. 其次,得会C#. 问题就是怎么把这两个联系在一起. 1. 建立一个 Form 项目. 2. 首先用 Visual Studio 创建一个数据库.具体做法在这里:https://msdn.microsoft.com/zh-cn/library/ms233763.aspx 3. 之后把这个数据库添加到

Visual Studio 2010 插件之Resharper

这一系列不是对每个功能的中文帮助,而是我对开发中可能涉及的功能需求,利用Resharper来完成.有些是Visual Studio有的,但是做的不好,有些是没有而Resharper发明的.总的目的都只有一个,就是加快你编写代码的速度.毕竟,我们的终极目标是在5点半前心满意足的关上电脑回家. 诚然,学会一个新的语言,或者一个新的工具,都有一个上手的问题.希望我的文章能够帮助你尽快地熟悉Resharper.在熟悉了它以后,你使用鼠标或者是无效击键的频率会大大地降低.当然这也需要对visual stu

使用Visual Studio 2015开发Android 程序

环境配置: 操作系统:win 7 64位 IDE:Visual Studio 2015 SDK:installer_r24.3.3-windows 安装前提: 编辑hosts文件(在附件可下载)因为安装过程中要联网更新和注册 安装完成VS之后直接新建android程序会提示: --------------------------- Microsoft Visual Studio --------------------------- 值不能为 null.参数名: path1 ----------

有感 Visual Studio 2015 RTM 简介 - 八年后回归 Dot Net,终于迎来了 Mvc 时代,盼走了 Web 窗体时代

有感 Visual Studio 2015 RTM 简介 - 八年后回归 Dot Net,终于迎来了 Mvc 时代,盼走了 Web 窗体时代 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 关于

Visual Studio Package 插件开发之自动生成实体工具

前言 这一篇是VS插件基于Visual Studio SDK扩展开发的,可能有些朋友看到[生成实体]心里可能会暗想,T4模板都可以做了.动软不是已经做了么.不就是读库保存文件到指定路径么…… 我希望做的效果是: 1.工具集成到vs上 2.动作完成后体现到项目(添加.删除项目项) 3.使用简单.轻量.灵活(配置化) 4.不依赖ORM(前两点有点像EF的DBFirst吧?) 文章最后会给上源码地址.   下面是效果图: 处理流程 以上是完整处理流程,我打算选择部分流程来讲.如果有对Visual St