关于事件的标准化用法

微软推荐了一套写事件程序的标准,下面我来简单的演示一下,将要实现如下功能,进行一次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方法就可以了。

转载于:https://www.cnblogs.com/ATP/archive/2007/08/25/869130.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值