На самом деле это вполне возможно. Первый и самый простой способ - установить свойство BrowsableAttributes сетки:
propGraph.BrowsableAttributes = new AttributeCollection(
new Attribute[]
{
new CategoryAttribute("Appearance")
});
Это отфильтрует все свойства, которые НЕ соответствуют типам атрибутов, которые вы предоставляете. К сожалению, это положительный фильтр, а не отрицательный, что делает его менее полезным IMHO.
Во-вторых, одинаково легко, вы можете создать простую обертку вокруг объекта, который вы хотите отобразить в PropertyGrid, и переопределить любые свойства, которые вы хотите скрыть / etc. как сквозные свойства:
public class MyDerivedControl : public TextBox
{
[Browsable(false)]
[Category("MyCustomCategory")]
public new bool Enabled
{
get { return base.Enabled }
set { base.Enabled = value; }
}
}
Вставьте это в сетку свойств, и свойство Enabled будет скрыто.
В-третьих, вы можете настроить саму PropertyGrid и попасть в мир дескрипторов типов и т. Д., Но если все, что вам нужно, это скрыть пару свойств, это излишне.
Надеюсь, это поможет.