Проблема редактирования пользовательской коллекции только для чтения в сетке свойств, .net, winforms - PullRequest
1 голос
/ 19 февраля 2010

У меня есть пользовательская коллекция, скажем, говорит COL, которая происходит от ObjectModel.Collection.

У меня есть собственный редактор коллекций, который прекрасно работает, когда для свойства типа COL активированы чтение и запись. Однако если я изменю свойство на ReadOnly, кнопка открытого редактора перестанет отображаться в сетке свойств.

В качестве теста я переопределил свой пользовательский редактор с CollectionEditor, и это сработало нормально.

Итак, мой вопрос: что проверяет создание сетки свойств, что CollectionEditor проходит, но мой редактор коллекции не работает?

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

Приветствие.

ETA:

Я ответил на вопрос ниже.

Ответы [ 2 ]

0 голосов
/ 20 февраля 2010

Я думаю, что поведение, которое вы описываете в своем собственном ответе, не является ошибкой, и оно разработано, и, честно говоря, это вполне логично. Посмотрите на выпадающие редакторы: они предлагают пользователю сделать выбор, и поэтому результатом является новое значение свойства (см. ColorEditor, AnchorEditor, DockEditor, CursorEditor, ...) Как таковая собственность не должна быть только для чтения. Модальный редактор предназначен для редактирования значения (обычно ссылочного типа) и поэтому может использоваться, даже если свойство доступно только для чтения. Конечно, это также можно использовать для выбора нового значения (например, FileNameEditor).

Так что, возможно, ответ «посмотрите на ваш дизайн пользовательского интерфейса». Вы уверены, что должны использовать выпадающий редактор для редактирования содержимого ссылочного типа?

0 голосов
/ 20 февраля 2010

Я выяснил, почему он не появился, и кажется, что это ошибка в PropertyGrid. Кнопка появляется, если для EditStyle установлено значение Modal, но не отображается, если для нее установлено значение DropDown.

Можно было бы подумать, что стили были только для ..., ну, стиль?

Если посмотреть на рефлектор, проблема возникает из-за того, что дополнительные проверки свойств только для чтения (например, проверка, является ли это ссылочным типом - и включение кнопки), происходят только в том случае, если стиль установлен как модальный. Хм, хороший.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...