Как изолировать набор свойств для использования с PropertyGrid? - PullRequest
1 голос
/ 10 декабря 2010

У меня есть несколько классов, которые наследуются от элементов управления WinForm.Они были расширены дополнительными свойствами, которые мне нужно редактировать в элементе управления сеткой свойств.Проблема в том, что при назначении экземпляра этого объекта в сетке свойств также отображаются свойства пользовательского интерфейса, такие как Color, Text, Dock и т. Д. Что было бы лучшим способом изолировать определенные свойства, чтобы эти пользовательские интерфейсысвойства не отображаются?

Спасибо за совет,

Ответы [ 2 ]

2 голосов
/ 10 декабря 2010

Вы сможете переопределить свойства, которые не хотите, и добавить [Browsable(false)].Другие параметры:

  • установить .BrowsableAttributes (http://msdn.microsoft.com/en-us/library/system.windows.forms.propertygrid.browsableattributes.aspx) и украсить членов, которых вы делаете , своим собственным атрибутом
  • написать TypeConverter и переопределить GetProperties; свяжите этот конвертер с вашим типом (или те же с помощью ICustomTypeConverter или TypeDescriptionProvider)

BrowsableAttributes будет моим первым ударом.

1 голос
/ 10 декабря 2010

Вы можете предоставить свой собственный TypeDescriptor для ваших классов, который предоставляет только те свойства, которые вы хотите редактировать.

В качестве альтернативы, если это слишком много работы или сетка свойств в вашем собственном приложении, а не в конструкторе winforms, вы можете создать свои собственные прокси-классы, которые предоставляют только дополнительные свойства.

...