asp.net控件开发技巧(2)关闭基类不必要的功能

 1.关闭容器

Control类有Controls集合属性,即继承Control类的控件都是一个容器控件,asp.net控件内置的有PlaceHolder控件,其只继承自Control类,什么也没做。但所有控件都是继承自Control类的。如一个label控件,照样可以当容器使用.

None.gif label1.Controls.add(control)

有些控件则不需要这个功能,如 Literal控件,只输出纯文字,不允许添加子控件



很简单,重写 CreateControlCollection方法,返回EmptyControlCollection空集合

None.gif     protected   override  ControlCollection CreateControlCollection()
ExpandedBlockStart.gifContractedBlock.gif    
dot.gif {
InBlock.gif        
return new EmptyControlCollection(this);
ExpandedBlockEnd.gif    }

None.gif

2.禁用属性

如SqlDataSourceControl控件,其继承自DataSourceControl,DataSourceControl类则继承自Control类,DataSourceControl 不需要呈现东西,自然不需要样式,所以像 SkinIDEnableTheming等属性则不需要使用。同时也可以用new关键字和一些元数据禁用掉像WebControl类的一些公共属性。有时候你确实不需要这些东西,或者是将这些属性给子标签用也可以。

ExpandedBlockStart.gif ContractedBlock.gif          /**/ /// <exclude/>
ExpandedBlockEnd.gif        
/// <excludetoc/>

None.gif         [Bindable( false ), Browsable( false ), EditorBrowsable(EditorBrowsableState.Never)]
None.gif        
new   public  System.Drawing.Color BorderColor
ExpandedBlockStart.gifContractedBlock.gif        
dot.gif {
InBlock.gif            
get
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{
InBlock.gif                
return new System.Drawing.Color();
ExpandedSubBlockEnd.gif            }

ExpandedBlockEnd.gif        }

总结:有时候继承下来的并不是你所需要的,所以灵活的重写基类的方法和属性是非常有必要的,而且有时候还必须这么做
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值