zoukankan      html  css  js  c++  java
  • C#(99):事件event

    一、概述

    委托是类型,事件是成员,事件其实是类中一个private的委托变量和add,remove两个方法。子类无法调用父类的事件。

    二、使用

    1. 事件数据类
    2. 定义委托
    3. 声明委托变量
    4. 对象类
    5. 调用
    delegate void CharEventHandler(object sender, CharEventArgs e); //定义委托
    
    public class CharEventArgs : EventArgs //定义一个事件数据类
    {
        public char CurrChar;
        public CharEventArgs(char CurrChar)
        {
            this.CurrChar = CurrChar;
        }
    }
    
    class CharChecker
    {
        char curr_char;
        public event CharEventHandler CharTest;//公布事件(声明委托变量)
        public char Curr_Char
        {
            get { return curr_char; }
            set
            {
                if (CharTest != null)
                {
                    CharEventArgs args = new CharEventArgs(value);
                    CharTest(this, args);// 触发事件(执行委托方法),传递实际参数值到事件处理程序。
                    curr_char = args.CurrChar;
                }
            }
        }
    }
    static void Main()
    {
        CharChecker chartester = new CharChecker();
        chartester.CharTest += (Source, e) =>//将事件与事件处理函数绑定(实例化委托)
        {
            {
                if (e.CurrChar == 'x' || e.CurrChar == 'X')
                {
                    Console.Write("触发的字符是x,");
                    Console.Write("把x替为:");
                    e.CurrChar = '?';
                }
                else
                    Console.Write("触发的字符不是x,");
            }
        };
        chartester.Curr_Char = 'a'; //设置属性值时,触发事件
        Console.WriteLine("事件处理结果:{0}", chartester.Curr_Char);
        
        chartester.Curr_Char = 'b';
        Console.WriteLine("事件处理结果:{0}", chartester.Curr_Char);
        
        chartester.Curr_Char = 'x';
        Console.WriteLine("{0}", chartester.Curr_Char);
        Console.WriteLine();
    }

    三、使用泛型委托 EventHandler<T>

    在.Net2.0以上,可用泛型,而不需要定义charEventHandler委托。

    public event EventHandler<CharEventArgs> CharTest;
  • 相关阅读:
    eazsy-ui 按钮样式
    sql
    事务
    spring-aop切入点配置
    改变HTML文件上传控件样式(隐藏默认样式 用点击图片间接调用)
    JS的几条规则
    JS高阶函数
    JAVA中的工厂方法模式和抽象工厂模式
    JAVA单例模式
    JAVA对象创建的过程
  • 原文地址:https://www.cnblogs.com/springsnow/p/9428608.html
Copyright © 2011-2022 走看看