张晓华的博客

        2005年,最后一场雪,还是下了,虽然凄凉了一些!
posts - 185, comments - 100, trackbacks - 8, articles - 1

屏蔽自定义控件的某些属性的问题

Posted on Wednesday, September 7, 2011 1:48 PM #C# 技术
如果是要在设计模式使用,新建一个继承自System.Windows.Forms.Design.ControlDesigne的类,比如叫MyDesigner,改写其中的PreFilterProperties方法:
  protected override void PreFilterProperties(IDictionary properties)
  {
  properties.Remove("property1");
  properties.Remove("property2");
  }

在你的控件类定义前加上
[Designer(typeof(MyDesigner))]
不过这种方法,实际是在设计模式时把这些属性从控件中去掉了,这样会丢失有些对控件必不可少的属性,比如大小,位置等,对于可视控件这些是在设计模式时必须存在的,去掉了会使设计器报错。

如果是要在程序运行时使用,那可以建一个TypeConverter类。

而实际上,用BrowsableAttribute在两种情况下都可以达到效果,也没有什么后遗症。比如要屏蔽Size属性
  [Browsable(false)]
  new public Size Size
  {
  get
  {
  return base.Size;
  }
  set
  {
  base.Size = value;
  }
  }
注意Size属性是不能override的,只能用new关键字屏蔽掉基类的。

Post Comment

Title  
Name  
Url
Comment   
Protected by Clearscreen.SharpHIPEnter the code you see: