2010-02-23 3 views
3

Я ищу, чтобы скрыть/показать свойства в зависимости от того, какой выбор пользователь делает в капле. Я отлично справляюсь с этим событием, но на самом деле не могу заставить правильные свойства исчезнуть. Решения, которые я нашел на линии, в основном с 2005 года, и поскольку у меня было очень мало опыта, я думал, что должен делать что-то неправильно, если скрывать свойства - это сложно.Программно скрывать свойства в PropertyGrid

До сих пор я пытался получить доступ к свойству после обработки события, но свойства ReadOnly и IsBrowsable доступны только для чтения.

PropertyGrid имеет свойство BrowsableAttributes, которая принимает список атрибутов, но работает только отрицательно и не может сделать или - только и. Предоставление коллекции атрибутов; категория - 'test' и isbrowable - true; возвращает те, которые соответствуют обоим, и поскольку я не могу предоставить несколько атрибутов. Я не могу сделать поиск достаточно определенным, чтобы скрыть нужные, оставив видимыми другие.

Я уже несколько часов стуча головой о стену, думая, что должен быть более простой способ.

+0

Это похоже на этот вопрос [] (http://stackoverflow.com/questions/626803/programatically-hide-field-in-propertygrid), что некоторые люди, возможно, пожелают перекрестную ссылку, но этот ответ кажется более полным , – Chasler

ответ

13

Вы пробовали применять этот атрибут к свойству:

 
[Browsable(false)] 
public object SomeProperty{ 
} 

Таким образом SomeProperty не будут появляться на PropertyGrid.

+0

Да, это будет работать сначала, но мне нужно отключить/включить, когда значение drop down изменится. – tgandrews

+0

@Tom: Вы знаете, что вы можете применить пользовательское описание к свойству ... '[Описание («некоторое описание для SomeProperty»)]' .... – t0mm13b

+0

Нет. Я не мог работать. Благодарю. – tgandrews

4

Чтобы сделать то, что вы хотите сделать здесь, вам нужно будет реализовать ICustomTypeDescriptor в своем классе, и это свойство PropertyGrid будет использовать для запроса вашего класса/объекта, чтобы узнать, какие элементы отображать в PropertyGrid, как отредактируйте их, какую категорию/описание они должны иметь и т. д.

Это может быть довольно запутанным, но, похоже, для кода проекта есть готовый набор вспомогательных классов по адресу .

я начал писать свою собственную версию кода данного проекта в код и после удара загвоздка я сделал некоторые погуглите и придумал ссылку Код проекта. Похоже, они сделали намного лучше, чем я. Я загрузил код, и, похоже, он работает неплохо.

Если это не поможет решить вашу проблему, сообщите мне, и я буду копать немного глубже.

Смежные вопросы