由于我们自已写的控件,有些属性不需要显示在属性友板上,这样有利于开发人员操作,过滤掉不用的属性,很早以前写过一些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
}