今天看见一个网友的留言:
有一个问题请教一下兄台,对于继承自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
{
    /**//// <summary>
    /// ButtonDesigner 的摘要说明。
    /// </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" );
        }
    }
}
如果大家有控件开发上的问题,也可以在我的主页上留言.
                   
屏蔽.NET自定义开发组件中的属性
                    80酷酷网    80kuku.com 
       
  
 
 
  
