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方法就可以了。
    肩负责任,永不退缩
  • 相关阅读:
    IE6浏览器无法打开QQ邮箱
    vue 项目中 点击回车键 自动登录
    从后台拿数据来排序
    webpack 学习文档 自己留着用
    vue父子之间的传参问题
    vue中引入mint-ui的步骤 + mintui快速上手
    vue页面刷新
    调试兼容性该注意的的点
    垂直居中的几种方式 + css文本框文字溢出显示省略号
    elementui 鼠标悬停出现下拉列表
  • 原文地址:https://www.cnblogs.com/ATP/p/869130.html
Copyright © 2011-2022 走看看