[原创]屏蔽.NET自定义开发组件中的属性

今天看见一个网友的留言:
有一个问题请教一下兄台,对于继承自microsoft的.net framework中现有的组件,怎么将一些属性屏蔽掉,就是新的组件不提供继承来的属性,比如继承Panel新编写EPanel,对于panel的属性的BackColor怎么屏蔽掉??

这个问题解决方法如下:

第一步:在你的控件类中定义设计时中提供服务的类
[Designer(typeof (MSPlus.Web.UI.Design.WebControls.ButtonDesigner))]
None.gif     [Description(  " MSPlus WebControl Button "  )]
None.gif    [Designer(
typeof  (MSPlus.Web.UI.Design.WebControls.ButtonDesigner))]
None.gif    
public   sealed   class  Button: MSPlusWebControl, IPostBackEventHandler
ExpandedBlockStart.gifContractedBlock.gif    
dot.gif {
ExpandedBlockEnd.gif}

第二步:新增一个设计时服务类,这个类继承 System.Web.UI.Design.ControlDesigner
第三步:重写PostFilterProperties()方法,

允许设计器从通过 TypeDescriptor 公开的属性集中更改或移除项。

ExpandedBlockStart.gif ContractedBlock.gif /**/ /**
InBlock.gif *    命名空间:    MSPlus.Web.UI.Design.WebControls
InBlock.gif *    类:                ButtonDesigner
InBlock.gif * 
InBlock.gif *    作者:            Mack.Z
InBlock.gif *    完成日期:    2003-12-21    
InBlock.gif *    版权信息:    MSLULU (2000.10.10)
ExpandedBlockEnd.gif *
*/

None.gif
None.gif
using  System;
None.gif
using  System.ComponentModel;
None.gif
using  System.ComponentModel.Design;
None.gif
using  System.Collections;
None.gif
None.gif
namespace  MSPlus.Web.UI.Design.WebControls
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
ExpandedSubBlockStart.gifContractedSubBlock.gif    
/**//// <summary>
InBlock.gif    
/// ButtonDesigner 的摘要说明。
ExpandedSubBlockEnd.gif    
/// </summary>

InBlock.gif    public class ButtonDesigner:System.Web.UI.Design.ControlDesigner
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        
public ButtonDesigner()
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            
//
InBlock.gif            
// TODO: 在此处添加构造函数逻辑
InBlock.gif            
//
ExpandedSubBlockEnd.gif
        }

InBlock.gif
InBlock.gif        
protected override void PostFilterProperties( IDictionary Properties )
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            Properties.Remove( 
"Height" );
InBlock.gif            Properties.Remove( 
"BackColor" );
InBlock.gif            Properties.Remove( 
"BorderWidth" );
InBlock.gif            Properties.Remove( 
"Font" );
InBlock.gif            Properties.Remove( 
"ForeColor" );
InBlock.gif            Properties.Remove( 
"TabIndex" );
InBlock.gif            Properties.Remove( 
"ToolTip" );
InBlock.gif            Properties.Remove( 
"Enabled" );
InBlock.gif            Properties.Remove( 
"EnableViewState" );
ExpandedSubBlockEnd.gif        }

InBlock.gif
ExpandedSubBlockEnd.gif    }

ExpandedBlockEnd.gif}

None.gif

注:这个方法只是屏蔽设计时的属性,但对于在代码文件通过智能提示的属性值是无法移除的(目前好像是没有办法作到)

如果大家有控件开发上的问题,也可以在我的主页上留言.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值