Чтобы скрыть MyCtrl
свойства, используйте атрибут [Browsable(False)]
для свойства.
[Browsable(false)]
public bool AProperty { get; set;}
Чтобы скрыть унаследованные свойства, необходимо переопределитьдобавьте и примените атрибут browsable.
[Browsable(false)]
public override string InheritedProperty { get; set;}
Примечание: В зависимости от обстоятельств может потребоваться добавить ключевое слово virtual
или new
.
Лучше было бы использовать ControlDesigner
.В конструкторе есть переопределение под названием PreFilterProperties
, которое можно использовать для добавления дополнительных атрибутов в коллекцию, извлеченную с помощью PropertyGrid
.
Designer(typeof(MyControlDesigner))]
public class MyControl : TextBox
{
// ...
}
public class MyControlDesigner : ...
{
// ...
protected override void PreFilterProperties(
IDictionary properties)
{
base.PreFilterProperties (properties);
// add the names of proeprties you wish to hide
string[] propertiesToHide =
{"MyProperty", "ErrorMessage"};
foreach(string propname in propertiesToHide)
{
prop =
(PropertyDescriptor)properties[propname];
if(prop!=null)
{
AttributeCollection runtimeAttributes =
prop.Attributes;
// make a copy of the original attributes
// but make room for one extra attribute
Attribute[] attrs =
new Attribute[runtimeAttributes.Count + 1];
runtimeAttributes.CopyTo(attrs, 0);
attrs[runtimeAttributes.Count] =
new BrowsableAttribute(false);
prop =
TypeDescriptor.CreateProperty(this.GetType(),
propname, prop.PropertyType,attrs);
properties[propname] = prop;
}
}
}
}
. Вы можете добавить имена объектов, которые хотите скрыть.до propertiesToHide
, что обеспечивает более чистое разделение.
Кредит в срок: http://www.codeproject.com/KB/webforms/HidingProperties.aspx#