.Net Framework的编码规范:

  • 委托类型的名称都应该以EventHandler结束。
  • 委托的原型定义:有一个void返回值,并接受两个输入参数:一个Object 类型,一个 EventArgs类型(或继承自EventArgs)。
  • 继承自EventArgs的类型应该以EventArgs结尾。

event本身是C#在委托基础上封装一些用于多事件注册的机制,这是event和委托的区别,委托仅仅是控件类定义和用户自定义事件方法共同遵守的方法的contract契约,一个方法类型而已 。

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

namespace DelegateApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            string str = "show !!!";
            InitEvent(str);
            Console.ReadLine();
        }
        private static void InitEvent(string showStr)
        {
            //初始化事件参数类,赋值
            InformationEventArgs eventArgs = new InformationEventArgs();
            eventArgs.Information = showStr;

InformationEvent eventer = new InformationEvent();
            InformationCall call = new InformationCall();
            
            eventer.InformationClick+= new InformationHandler(call.ShowInformation);
           
            eventer.OnInformation(eventArgs);
            Console.ReadLine();
        }
    }
    /// <summary>
    /// 事件参数
    /// </summary>
    public class InformationEventArgs : EventArgs
    {
        private string _message;
        public string Information
        {
            get
            {
                return _message;
            }
            set
            {
                _message = value;
            }
        }
    }
    //委托
    public delegate void InformationHandler(object sender,InformationEventArgs e);
    //事件
    public class InformationEvent
    {
        public event InformationHandler InformationClick;
        //触发事件
        public void OnInformation(InformationEventArgs e)
        {
            if (InformationClick != null)
            {
                InformationClick(this, e);//匹配委托  进行InformationEventArgs传值
            }
        }
    }

public class InformationCall
    {
        private string _strInformation;
        public  string InformationString
        {
            get
            {
                return _strInformation;
            }
            set
            {
                _strInformation = value;
            }
        }
        //调用的方法  匹配委托  显示事件参数的值
        public void ShowInformation(object sender, InformationEventArgs e)
        {
            InformationString = e.Information;
            Console.WriteLine(InformationString);
        }
    }
}

源代码:/Files/jasenkin/DelegateApplication.rar

转载于:https://www.cnblogs.com/jasenkin/archive/2010/03/08/1680961.html

自定义委托,事件,参数的简单随笔相关推荐

  1. ASP.NET中定制自己的委托和事件参数类

    定制自己的委托和事件参数类 本文节选自<庖丁解牛:纵向切入ASP.NET 3.5控件和组件开发技术>一书 一般在实际开发中,对于事件不需要传递数据信息时,像上面的KingTextBox控件 ...

  2. [转载]c#委托事件简单例子

    c#委托事件简单例子 2009-05-11 10:57 一.委托委托类似于函数指针,但函数指针只能引用静态方法,而委托既能引用静态方法,也能引用实例方法. 委托使用分三步:1.委托声明.2.委托实例化 ...

  3. 程序员委托事件学习随笔

    委托的声明 public delegate void MyDelegate(string str); 委托是一种特殊的类型(class),用途是来实现对一种方法的封装.在某种事件发生时,自动调用该方法 ...

  4. C#中在多个地方调用同一个触发器从而触发同一个自定义委托的事件

    场景 在Winfom中可以在页面上多个按钮或者右键的点击事件中触发同一个自定义的委托事件. 实现 在位置一按钮点击事件中触发 string parentPath = System.IO.Directo ...

  5. C# 委托事件传递参数

    关于委托传值的总结,每天总结一点点,每天进步一点点 这里尝试了串口通讯委托,虽然本来就有,但是自己练习一下还是好的. //定义一个委托public delegate void serialPortHa ...

  6. 刘铁锰老师C#语言入门详解(委托事件等部分有详细代码和注释)

    目录 1.初识类 1.1 类与对象的关系 1.2 类的三大成员 1.3 静态成员与实例成员 1.4 类修饰符 2.构成C#语言的基本元素 2.1 六个基本元素 2.2 算法简介 3. 详解类型.变量与 ...

  7. C语言中的函数指针、函数的直接/间接调用、C# 委托(自定义委托、内置泛型委托、委托的实例化、委托的一般使用(模板方法、回调方法)、泛型委托、多播委托、同步/异步使用委托)

    文章目录 C语言中的函数指针 函数的直接调用与间接调用 Java中没有与委托对应的功能实体 C# 委托 C# 自定义委托类型 C# 内置泛型委托类型 委托的实例化 委托也支持泛型的使用 委托的一般使用 ...

  8. c#_委托事件的理解

    我找了三篇写的比较不错的博客,希望对委托和事件的理解有所帮助: 第一篇: 将方法作为方法的参数 我们先不管这个标题如何的绕口,也不管委托究竟是个什么东西,来看下面这两个最简单的方法,它们不过是在屏幕上 ...

  9. 委托事件实现更新窗体

    委托 和 事件在 .Net Framework中的应用非常广泛. 委托( Delegate ):是一种定义方法签名(只有方法的名字,没有方法体),可以与具有兼容的签名的任何方法关联.所谓兼容的方法,是 ...

最新文章

  1. boost::mpl模块实现partition相关的测试程序
  2. 2019牛客暑期多校训练营(第六场)C - Palindrome Mouse (回文树dfs)
  3. 线程问题—一个线程怎么调出另外一个线程的结果。
  4. 求【javascript设计模式】【高性能网站建设指南】PDF!哪位有给下啊!!!
  5. c#如何wmf图片转换成png图片_每日一学:如何将png图片转换为jpg图片
  6. 泽泽计算机科技,《计算机与信息技术》大学技能学习丛书.pdf
  7. Taro+react开发(18)--定义变量值
  8. 荣耀X20 SE评测:6400万高清美拍 2000元以下真香现场
  9. python语言的读法-Python语言的特点及自学建议
  10. 问题集录--新手入门深度学习,选择TensorFlow 好吗?
  11. c语言银行卡六位密码编译,6位随机密码生成器
  12. 软件设计——依赖倒置
  13. 居民供暖室温无线监测系统
  14. Android 12/12L 全面升级、微信和“吃鸡”都在用 Flutter,2021 Google 开发者大会你看了吗?
  15. 联想服务器系统备份,操作演示:恢复预装系统前的数据备份方法
  16. 苹果手机浏览器safari不显示手机号问题
  17. AngularJS的优缺点总结
  18. 使用WASAPI捕获声卡音频
  19. 线性表La和线性表Lb合并
  20. CSAPP - LAB 1 datalab

热门文章

  1. LVS——TUN隧道模式(负载均衡)
  2. python异常的处理机制_python异常和文件处理机制详解
  3. mysql扩展中如何处理结果集_请写出PHP处理结果集的5个函数(使用mysql扩展)_学小易找答案...
  4. illegalargumentexception是什么异常_实战 | 统一异常处理介绍及实战
  5. argument ‘input‘ (position 1) must be Tensor, not XX
  6. kaggle实战_4解决高维数据分类/回归问题--房价预测
  7. 深圳数字人民币专项资金至3月末已累计发放1.96亿元
  8. 腾讯公开“区块链网络的信息处理方法”相关专利
  9. SAP License:MM模块审批策略问题
  10. 机器学习:用梯度下降法实现线性回归