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

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

这个问题解决方法如下:

第一步:在你的控件类中定义设计时中提供服务的类
[Designer(typeof (MSPlus.Web.UI.Design.WebControls.ButtonDesigner))]

[Description( " MSPlus WebControl Button " )]
[Designer( typeof (MSPlus.Web.UI.Design.WebControls.ButtonDesigner))]
public sealed class Button: MSPlusWebControl, IPostBackEventHandler
{
}

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

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

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

using System;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Collections;

namespace MSPlus.Web.UI.Design.WebControls
{
/
/ ///

1<summary>   
2![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif) ///  ButtonDesigner 的摘要说明。   
3![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif) ///  </summary>

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

protected override void PostFilterProperties( IDictionary Properties )
{
Properties.Remove( " Height " );
Properties.Remove( " BackColor " );
Properties.Remove( " BorderWidth " );
Properties.Remove( " Font " );
Properties.Remove( " ForeColor " );
Properties.Remove( " TabIndex " );
Properties.Remove( " ToolTip " );
Properties.Remove( " Enabled " );
Properties.Remove( " EnableViewState " );
}

}
}

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

Published At
Categories with Web编程
Tagged with
comments powered by Disqus