C#——添加事件
委托与事件,主要说明如何自定义事件,就举一个最简单的额例子。
自己写的一个类,在类中定义成员、属性以及方法,现在想要监视其中一个成员的变化,成员的value一旦变化就执行相应的程序。
具体写法:
//用来指示是否有新消息传入 值改变,就表示有信息入 int msgIn=1; public delegate void Umsg(object sender);//, EventArgs e); public event Umsg msgCome; public int MsgIn { get { return msgIn; } set { if(msgIn!=value) { while (msgCome == null) { Thread.Sleep(100); } msgCome(this);//, new EventArgs()); } msgIn = value; } }
说明两点,第一事件的定义是在类中定义的,事件的使用是需要注册的,注册的代码不是在类中注册,而是在使用这个类的时候注册。
注册语句格式如下:
ServerMessage.msgCome += new msgDialogue.Umsg(SetText);
SetText是一个函数,也就是说事件触发时,执行这个函数。这也说明,事件定义并没有制定事件的处理方式,而事件注册时才说明事件的处理方式。
当改变msgIn时不会触发事件,必须写大写的MsgIn