• 关于事件的标准化用法


    微软推荐了一套写事件程序的标准,下面我来简单的演示一下,将要实现如下功能,进行一次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方法就可以了。
    肩负责任,永不退缩
  • 相关阅读:
    view如何被添加到window上并显示出来
    事件分发机制
    绘制机制
    setContentView
    消息机制——handler
    布局文件是如何被解析的?
    Xamarin.ios引用第三方SDK
    Xamarin.ios——First APP
    UITextView 文本垂直居中
    从NavigationController 下的UITableView中移除 header
  • 原文地址:https://www.cnblogs.com/ATP/p/869130.html
Copyright © 2020-2023  润新知