zoukankan      html  css  js  c++  java
  • 关于事件的标准化用法

    微软推荐了一套写事件程序的标准,下面我来简单的演示一下,将要实现如下功能,进行一次for循环,没循环一次,触发一次是事件,将当前循环的次数输出,事件定义及实现类如下:
    using System;
    using System.Collections.Generic;
    using System.Text;

    namespace 事件
    {
        
    //定义委托,要注意委托名应以EventHandle结尾,参数应为object sender和IndexEventArgs e
        public delegate void MydelegateEventHandle(object sender,IndexEventArgs e);
        
    //定义IndexEventArgs类,应作为EventArgs的子类

        
    public class IndexEventArgs : EventArgs //EventArgs是包含事件数据的类的基类
        {
            
    int index;
            
    public IndexEventArgs(int i)
            
    {
                index 
    = i;
            }


            
    public int Index
            
    {
                
    get return index; }
            }

        }

        
    //定义功能类
        public class A
        
    {
            
    public event MydelegateEventHandle MyEvent;//定义事件委托
            public void count()
            
    {
                
    for (int i = 1; i < 101; i++)
                
    {
                    IndexEventArgs e 
    = new IndexEventArgs(i);
                    OnMyEvent(e);
    //每循环一次,执行一次事件

                }

            }

            
            
    //定义protected类型的虚方法,方法名应为事件委托名前面加“On”

            
    protected virtual void OnMyEvent(IndexEventArgs e)
            
    {
                
    if (MyEvent != null)
                
    {
                    MyEvent(
    this, e);
                }

            }

        }

    }


    主函数调用如下:
    using System;
    using System.Collections.Generic;
    using System.Text;

    namespace 事件
    {
        
    class Program
        
    {
            
    static void Main(string[] args)
            
    {
                A a 
    = new A();
                a.MyEvent 
    += new MydelegateEventHandle(a_MyEvent)//关联事件
                a.count();
            }


            
    static void a_MyEvent(object sender, IndexEventArgs e)
            
    {
                Console.WriteLine(e.Index);
            }

        }

    }


    请大家注意看注释中的命名规范,我要说明一点,建立一个虚方法来执行事件是为了方便的实现功能的增删只要再写一个子类,重写OnMyEvent方法就可以了。
    肩负责任,永不退缩
  • 相关阅读:
    模拟实现bind、call、apply函数
    模拟实现ECMAScript5新增的数组方法
    HBuilder mui页面间传值的几种方式
    手机端软键盘弹出挤压页面的问题
    js获取当前时间
    原生js根据class获取元素的方法
    jquery之获取select选中的值
    原生js获取元素属性值方法
    利用javascrit获取url传递的参数
    jQuery图片预加载(延迟加载)之插件Lazy Load
  • 原文地址:https://www.cnblogs.com/ATP/p/869130.html
Copyright © 2011-2022 走看看