
由于我们自已写的控件,有些属性不需要显示在属性友板上,这样有利于开发人员操作,过滤掉不用的属性,很早以前写过一些Ajax的.Net控件,所以用到了这样的功能,这里分享一下我的做法。
1、在当前控件里建一个类(AjaxDesigner),继承(ControlDesigner)类。
2、然后在主控件类里这样写:
[Designer(typeof(AjaxDesigner)), DefaultProperty("ScriptSuccess"),DefaultEvent("AjaxCallback")] public class AjaxCall :WebControls { //... }
3、AjaxDesigner类的主要源码是:
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 }