ASP.NET自定义控件组件开发 第三章 为控件添加事件 后篇2011-10-04 博客园 小洋前一篇文章只是简单的说了下事件,但是大家应该方法,在ASP.NET自定义控件中只是简单那么定义事 件是行不通。如果大家开发的是WinForm中的事件,之前的定义可能没有什么大的问题,只是在效率方法 欠考虑而且,还是可以运行的。下面我们就回到ASP.NET中的事件。大家也许看了我们之前定义的事件,确实,事件一般是那么定义的,但是那样定义事件后的,运行起 来的效率不搞,因为那样定义事件后,编译器在编译事件代码的时候,会自动的为我们加入很多多线程安 全的代码,就是说,虽然我们只是定义几行代码,大但是编译器为我们做了很多额外的事情,当然,这样 代码的运行的效率可想而知。在很多的时候,我们自定义控件的事件不是需要考虑多线程安全等问题的,所我们就要改变代码,使 其运行的更加好,我们就采用下面的方法:显示的申明事件:
1 2 //其实其实一个辅助的变量,用来做Hashtable中的”键“ 3 private static object ValidateCreditCardFormKey = new object(); 4 public event ValidateCreditCardFormEventHandler ValidateCreditCardForm 5 { 6 add 7 { 8 Events.AddHandler(ValidateCreditCardFormKey, value); 9 }10 remove11 {12 Events.RemoveHandler(ValidateCreditCardFormKey, value);13 }14 }151617 protected void OnValidateCreditCardForm(ValidateCreditCardFormEventArgs args)18 {19 ValidateCreditCardFormEventHandler handler = Events[ValidateCreditCardFormKey]20 as ValidateCreditCardFormEventHandler;21 if (handler != null)22 handler(this, args);23 }