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方法就可以了。
    肩负责任,永不退缩
  • 相关阅读:
    MVC CONTROLS TOOLKIT
    activemq Example
    OWASP
    ActiveMQ持久化消息的三种方式
    sqlyog
    dotnet压缩
    asp.net ajax 环境 c#与js互调
    asp.net 初步入门使用正则抓取网页信息
    用ASP.NET with C# 绘制曲线图(Curve图)转
    asp.net 中使用excel组件权限设置
  • 原文地址:https://www.cnblogs.com/ATP/p/869130.html
Copyright © 2011-2022 走看看