自定义控件开发之----自定义视图状态

   这篇,我将谈谈自己在开发自定义控件中的一些方法。

 

   现在.net集成性太强,好多东西都不用自己去写,这让C++的相当羡慕,哈哈,所以那些麻烦的事(自定义控件)程序员都不去自己做,但是会底层的原理还是比较有好处的。

 

   如果一个控件中有非常多的属性的话,你会选择全写在一个类中吗?

 

  一般的人都会说不,因为这样的代码一看就晕,不好管理.如果能够按控件的特性来分开写的话,应该会好很多,这样在程序员调用的时候也好设置相关的属性.

 

    前几篇文章我一直在做自定义分页控件.我们知道自定义分页控件如果做完善的话特别麻烦,理所当然的相应的属性也就特别多.所在根据我自己的实际情况,我把自己的分页控件分为三个类:

 

    分页控件中部分类图结构:

 

  

 

  1: CustomPagerSetting 分页控件相关设置

  2 :CustomPagerText 分页控件相关文本设置

  3:CustomInfoSectionSetting 分页控件自定义信息区设置

 

     如此多的属性如果是放在一个类中那是相当麻烦的.为此我们可以将它们分开形成内嵌属性.

 

Code

     
     如何形成内嵌属性我现在不想多说,此时的控件属性如果是在代码中动态设置的话,如果页面没有回发事件,都是正常的,

但是如果有回发所有的属性都要重新赋值,否则所有的属性值都会丢失.

 

     我们知道viewstate是不能保存复杂属性,就像上面的三个类,它只能保存简单属性,例如int,string等.

 

     刚开始的时候我在CustomPagerSetting为中修改,将里面的属性都用viewstate保存,但是编译通不过,提示不存在viewstate对象,但是在控件文件中是可以的,那是因为控件自己继承control类,类文件又不能继承control,所以我们需要自定义一个ViewState属性
 
Code

 

    自定义类型状态管理,那么我们就必须接触到IStateManager这个接口实现这个接口要实现三个方法:


Code

 

    这些MSN上都可查.这还不行,还要在控件类中实现自定义视图管理.


Code

    

    此时我们再试的时候,发现回发的时候,属性就不会丢失了。


posted on 2008-04-17 17:30  min.jiang  阅读(3252)  评论(22编辑  收藏  举报