屏蔽.NET自定义控件的组件属性

所属分类:[Asp.Net] | 发表于:2010-1-21 15:43:57 | 人气(496)

由于我们自已写的控件,有些属性不需要显示在属性友板上,这样有利于开发人员操作,过滤掉不用的属性,很早以前写过一些Ajax的.Net控件,所以用到了这样的功能,这里分享一下我的做法。

1、在当前控件里建一个类(AjaxDesigner),继承(ControlDesigner)类。

2、然后在主控件类里这样写:

EXFCODE:
[Designer(typeof(AjaxDesigner)), DefaultProperty("ScriptSuccess"),DefaultEvent("AjaxCallback")]
public class AjaxCall :WebControls
{
    //...
}

3、AjaxDesigner类的主要源码是:

EXFCODE:
public class AjaxDesigner : ControlDesigner
    {
        //...
        //其它方法(略)
        //...
 
        #region 屏蔽.NET自定义控件的组件属性(重构PostFilterProperties)
        protected override void PostFilterProperties(System.Collections.IDictionary properties)
        {
            //要移出的属性
            properties.Remove("BackColor");
            properties.Remove("BorderWidth");
            properties.Remove("Font");
            properties.Remove("ForeColor");
            properties.Remove("TabIndex");
            properties.Remove("ToolTip");
            properties.Remove("Enabled");
            properties.Remove("EnableViewState");
            properties.Remove("CssClass");
            properties.Remove("BorderColor");
            properties.Remove("BorderStyle");
            properties.Remove("SkinID");
            properties.Remove("EnableTheming");
            properties.Remove("Width");
            properties.Remove("Height");
            properties.Remove("AccessKey");
            properties.Remove("Visible");
        }
        #endregion
    }

0    0