在C#编程中,除了Method和Property,任何Class都可以有自己的事件(Event)。
定义和使用自定义事件的步骤如下:
(1)在Class之外定义一个delegate类型,用于确定事件程序的接口
(2)在Class内部,声明一个public event变量,类型为上一步骤定义的delegate类型
(3)在某个Method或者Property内部某处,触发事件
(4)Client程序中使用+=操作符指定事件处理程序 例子:

例子:

    // 定义Delegate类型,约束事件程序的参数
    public delegate void MyEventHandler(object sender, long lineNumber) ;

    public class DataImports
    {
        // 定义新事件NewLineRead
        public event MyEventHandler NewLineRead ;

        public void ImportData()
        {
            long i = 0 ; // 事件参数
            while()
            {
                i++ ;
                // 触发事件
                if( NewLineRead != null ) NewLineRead(this, i);
                //
            }
            //
        }
        //
    }

// 以下为Client代码

    private void CallMethod()
    {
        // 声明Class变量,不需要WithEvents
        private DataImports _da = null;
        // 指定事件处理程序
        _da.NewLineRead += new MyEventHandler(this.DA_EnterNewLine) ;
        // 调用Class方法,途中会触发事件
        _da.ImportData();
    }
    // 事件处理程序
    private void DA_EnterNewLine(object sender, long lineNumber)
    {
        // 
    }

转载于:https://www.cnblogs.com/miaomiaoga/archive/2004/11/14/63832.html

使用delegate类型设计自定义事件相关推荐

  1. C#:委托和自定义事件

    1. 委托概述 "委托"相当于C++中的"函数指针",委托必须与所要"指向"的函数在"参数"和"返回类型&qu ...

  2. 转:终于会用c#中的delegate(委托)和event(事件)了

    第一个例子: public class DelegateTest {// 声明delegate对象 public delegate void CompareDelegate(int a,int b); ...

  3. C#事件-自定义事件

    事件有很多,比如说 鼠标的事件:MouserMove,MouserDown等. 键盘的事件:KeyUp,KeyDown,KeyPress. 有事件,就会有对事件进行处理的方法,而事件和处理方法之间是怎 ...

  4. 浅析C#的事件处理和自定义事件

    一.简单的自定义事件(1):无参数 namespace UserInputMonitor { class UserInputMonitor { public delegate void UserReq ...

  5. WPF设计の自定义窗体

    原文:WPF设计の自定义窗体 效果图如下: 实现思路: 1.继承Window类 2.为自定义的CustomWindow类设计窗体样式(使用Blend很方便!) 3.为窗体增加最大最小化和关闭按钮,并实 ...

  6. Flash/Flex学习笔记(34):AS3中的自定义事件

    类似C#中自定义事件需要一个自定义的EventArgs子类一样,AS3也需要开发者自定义一个Event类的子类,这里我们假设一种场景:设计一个Person(人物)类,里面有Age(年龄),Name(姓 ...

  7. 模板使用自定义类型_自定义虚幻图表_拓展蓝图功能

    最近研究了下虚幻的图表编辑器写法,制作了个基础模板给大家用来制作自己的编辑器~ 资源类型节点编辑器(提供了基础的节点编辑功能.并保存时转化为UObject的子类的运行时数据结构): Eragon-Br ...

  8. 【JS】512- JS 自定义事件如此简单!

    在前端开发世界中,JavaScript 和 HTML 之间往往通过 事件 来实现交互.其中多数为内置事件,本文主要介绍 JS自定义事件概念和实现方式,并结合案例详细分析自定义事件的原理.功能.应用及注 ...

  9. javascript中自定义事件

    自定义事件:用户可以指定事件类型,这个类型实际上就是一个字符串,然后为这个类型的事件指定事件处理函数,可以注册多个事件处理函数(用数组管理),调用时,从多个事件处理函数中找到再调用. function ...

最新文章

  1. Flutter专题1-环境搭建
  2. idea中使用docker插件部署项目
  3. 36氪研究 | 智慧零售行业研究报告
  4. 第十六届智能车竞赛广东省线上比赛第二波来袭
  5. mysql sleep详解_关于MySQL的SLEEP(N)函数
  6. 网页设计精粹:网页中那些迷人的按钮设计
  7. SpringMVC的表单标签库
  8. jquery.MultiFile 实现自动删掉上传列表
  9. python屏幕的交互(读取输出信息)input,raw_input的区别
  10. sc7cb27180 士兰微_供应 SILAN/士兰微 SC7A30E SC7A30 LGA10-3A 加速度计/三轴磁传感器
  11. 【QT】QT从零入门教程(十六):QSS样式表
  12. 13.设计模式--外观模式(Facade模式)
  13. 渥太华大学计算机科学,加拿大渥太华大学计算机科学排名第四
  14. Python L型组件填图问题(棋盘覆盖问题)
  15. [日语二级词汇]日语二级必会汉字总结10
  16. 用C#编写Visionpro相关窗体应用(.NET Framework)
  17. linux上项目运行日志导致磁盘空间不够的问题
  18. java 参考中文站 http://www.javaref.cn
  19. 【三维目标检测】PointRCNN(一)
  20. java实现图片上插入文字并保存

热门文章

  1. Python3 使用 pymysql 连接 MySQL 建表时出现 Warning3719 UTF8 警告
  2. 【牛客 - 157C】PH试纸(前缀和,或权值线段树,主席树)
  3. 【EOJ Monthly 2019.01 - E】唐纳德先生与假骰子(假概率问题)
  4. Centos7下安装Python3.5
  5. mysql 7天自动拒单功能,mysql查询最近7天的数据,没有数据自动补0
  6. android 居右属性,使用layoutDirection属性设置布局靠左或靠右
  7. linux内核支持的加密算法,Linux Kernel(Android) 加密算法总结(三)-应用程序调用内核加密算法接口...
  8. php 生成验证码干扰元素,PHP生成指定位数验证码与可控干扰元素第二篇
  9. php 实现百度坐标转换,PHP实现腾讯与百度坐标转换
  10. docker run后台启动命令_Docker-第五部分:15个 Docker 命令