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.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);
}
}
}
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方法就可以了。