原文: (建议看原文)
坦白说自定义事件在asp.net中用到的机率确实很低,但低并不代表没有用到。尤其是在做自定义控件的时候,嘿嘿,自定义事件几乎就不可避免地要用到。记得以前在博客上写过一个关于自定义事件在asp.net中的使用的帖子。那个例子是不带参数,现在回过头来看看,确实不大爽。所以今天有空就把那个例子重做了一次。注意,我并不是强调自定义事件就一定要带参数才算是事件,我只是拿那个例子小题大做,目的就是为了说明自定义事件带参数的应用而已。
好了,废话少说,看代码:
// 1.首先定义一个参数类 public partial class SayEventArgs : EventArgs { public String Username; public String Websiteurl; } // 2.定义一个委托 public delegate void SayEventHandler( object sender,SayEventArgs e); // 3.定义一个事件 public event SayEventHandler SayEvent; // 4.引发事件 public void OnSayEvent(SayEventArgs e) { if (SayEvent != null ) { SayEvent( this , e); } } // 5.传参函数 public void Loginsite(String Username, String Websiteurl) { SayEventArgs e = new SayEventArgs(); e.Username = Username; e.Websiteurl = Websiteurl; Label1.Text = e.Username + " <br> " ; Label1.Text += " 欢迎你来到<a href= " + e.Websiteurl + " >痞子菜雨夜听风小轩</a> " ; OnSayEvent(e); } // 6.所要委托的函数 public void Saysomething( object sender, SayEventArgs e) { Label2.Text = e.Username + " 请注意:<br>在呢个博客<a href= " + e.Websiteurl + " >痞子菜雨夜听风小轩</a>度,唔系事必要你讲野,但系你所讲既野将来会作为呈堂证供,ok? " ; } // 7.建立委托实例 SayEvent += new SayEventHandler(Saysomething); Loginsite( " 痞子菜 " , " u/admin/index.html " );
看到了吗?定义事件也就这几步,要复杂点的话就把函数写得复杂点就行了。就这样。