WebControl开发点滴3:给所有控件添加属性

vs2003设计器有个很有趣的特性:在WinForm设计时,控件没有ToolTip, 如果要加上的话,需要从ToolBox上拖出一个ToopTip专门的控件,这时候所画面上所有控件的属性中都会增加一个ToolTip属性,看起来很酷。

要做这样一个控件也很简单:
[ProvideProperty("Xxx",typeof(System.Web.UI.Control))]
这里要动态添加的属性是Xxxx, 目标是所有Control控件。
在控件类前加几个属性就会有几个动态属性出来。

None.gif public   class  CultureSelector : DropDownList,IExtenderProvider
ExpandedBlockStart.gifContractedBlock.gif    
dot.gif {
InBlock.gif        
public bool CanExtend(object extendee)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            
return extendee != this && extendee is WebControl;
ExpandedSubBlockEnd.gif        }

ExpandedBlockEnd.gif}

在控件类上必须声明IExtenderProvider接口。在CanExtend方法内做详细筛选,比如只想给TextBox增加动态属性。

None.gif         [Description( " 允许的属性 " )]
None.gif        [Category(
" Culture " )]
None.gif        
public   string [] GetXxx(Control control) 
ExpandedBlockStart.gifContractedBlock.gif        
dot.gif {
ExpandedBlockEnd.gif        }

None.gif        
None.gif        
public   void  SetXxxx(Control control,  string [] value) 
ExpandedBlockStart.gifContractedBlock.gif        
dot.gif {
ExpandedBlockEnd.gif        }

None.gif

动态属性的操作会调用以上代码。注意:
1.参数中的Control必须和上面的声明一致。
2. GetXxx/SetXxxx必须和上面的属性声明一致,缺少会变成只读
3. GetXxx的返回值和SetXxx的参数值类型必须一致。类型不限。
4. [Category][Description]等加在GetXxx上,用法和真是属性一致。




为现有控件添加以上代码,这个控件在运行时就会为其它控件动态添加属性,有趣吧 :)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值