1,我对c#事件的理解总结
事件拥有者(类),也是事件的触发者。
事件发生后,通过被委托的方法,对事件进行反应或者处理。方法可以是其他类的,也可以是事件所在类的本体。 被委托进来的方法都加载在 事件中。
事件的参数包括感知器,和传出数据。感知器可自己定义。输出数据必须继承c#本身的接口—— EventArgs
事件第一步 建立约束事件类型的委托。约束了可以用来处理事件的方法类型
Public delegate methodEventHandler ( Sender senser, EventArgs e )
可以理解为 触发器sender 触发以后给出的消息在类eventargs内封装
第二步
建立 触发器sender的class。并在触发器类内部 规定事件。触发器类名称可以可自行规化,无须继承
定义event事件
Public event methodEventHandler event1;定义了事件,且事件只能被特定委托类型方法处理。
建立 发出消息类EventArgs。并规划传出的数据个数和类型。必须从系统EventArgs处继承,统一接口
Public class args :EventArgs
Public string saywhat
Public int times
namespace text3
{
public delegate void DEventHandler(customer sender, arges e);
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
customer cus=new customer();
actioner act=new actioner();
cus.event1 += act.show; //订阅
cus.dosomething(); //触发器
}
}
//传感器
public class customer
{
public event DEventHandler event1;//定义事件,可用的委托方法类型
public void dosomething() //触发器
{
arges w=new arges();
w.str1 = "hallo word";
event1.Invoke(this,w);
}
}
//数据集
public class arges: EventArgs
{
public string str1 ;
}
//订阅者
public class actioner
{
public void show(customer sender, arges e)
{
MessageBox.Show(e.str1);
}
}
}