2012-12-15 2 views
3

Я использую PropertyGrid (в CollectionEditor) для редактирования некоторых свойств класса. Свойства фактически завернуты в классы, которые реализуют ICustomTypeDescriptor. Один из них использует собственный редактор, который наследует от UITypeEditor. Когда пользователь изменяет значение этого свойства в настраиваемом редакторе, значение другого свойства также обновляется (по коду в пользовательском редакторе, по этой причине оболочка свойства имеет ссылку на другое свойство). Все идет нормально.Как обновить PropertyGrid из настраиваемого редактора?

Но когда пользователь закрывает пользовательский редактор, PropertyGrid показывает только новое значение отредактированного свойства и не обновляет другое свойство (хотя его значение определенно изменилось).

Как я могу обновить все, содержащее PropertyGrid, от пользовательского редактора?

+0

Используйте атрибут [RefreshProperties] для свойства, которое вы редактируете. –

+0

@HansPassant Это не работает. Я пробовал для всех свойств, а также возвращал это через наследник PropertyDescriptor. Возможно, это потому, что PropertyGrid, который я использую, на самом деле является внутри CollectionEditor? – Peladao

+0

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

ответ

1

Я нашел решение сам:

Метод EditValue пользовательского редактора должен вернуть новый объект, а не передается в объект значения. Затем PropertyGrid автоматически обновляет другие свойства.

Мне не нужно было использовать атрибут RefreshProperties где угодно.