庖丁解牛Asp.net3.5控件和组件开发技术系列—事件和数据回发机制(一)
控件的Text属性,并返回true,让页框架自动调用数据回发事件方法 RaisePostDataChangedEvent,使控件具有调用文本框值变化事件的机会;否则,如果新旧值相同,则不必修改控件Text属性值,直接返回false,通知页框架不调用RaisePostDataChangedEvent方法。
接下来,RaisePostDataChangedEvent事件的实现代码如下:
该方法在LoadPostData方法之后执行,如果上面的LoadPostData方法返回值为true,则页框架会调用本方法,方法体中仅有一句代码,即调用OnTextChanged方法。此方法代码如下:
此方法体中判断开发人员在页面使用KingTextBox时是否注册了TextChanged 事件,如果注册了就调用开发人员的事件逻辑。委托和事件在本章开始的5.1.1节已经对其原理和用法作了说明,这里就不再多说。 完善一下控件,由于控件仅有一个属性,也仅有一个事件,可以设置控件的类元数据属性,指定默认属性和默认事件,设置好后的代码如下:
另外,为了使控件保留扩展性。以上这些方法LoadPostData,RaisePostDataChangedEvent和 OnTextChanged都通过关键字virtual设置成了虚方法,并且至少设置成protected,这样就可以保证控件人员很容易从该控件继承,通过重载相应的方法来扩展现有控件功能,使控件具有很好的扩展性。对于扩展控件功能,后面会有专门介绍扩展GridView控件的章节。 到现在为止KingTextBox已经完成了。对于此控件笔者专门作了个测试其功能的页面例子,如图5-3所示。 图5-3 测试King TextBox功能的页面 页面上左边放置一个KingTextBox,右边放置一个标准的ASP.NET TextBox。下面是两个按钮,功能是完成把值复制给对方,并清空自己的值。下面的Label是提示是否执行了KingTextBox的事件。 上面设计器对应的源代码如下:
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |