PropertyGrid только для чтения

Я использую PropertyGrid в приложении, которое я пишу, чтобы позволить пользователям просматривать и иногда редактировать экземпляры моих объектов. Иногда у пользователя может быть файл, открытый в режиме чтения-записи, где они могут внести изменения в файл через сетку свойства. В других случаях они могут иметь файл, открытый в режиме только для чтения, и не должны мочь внести любые изменения в объекты через PropetyGrid. Мои классы также имеют динамические свойства, которые возвращаются путем реализации ICustomTypeDescriptor. Который является, почему я действительно хочу использовать в своих интересах созданный в гибкости управления PropertyGrid.

Кажется, нет простого способа установить сетку Свойства на режим только для чтения. Если я отключаю PropertyGrid, это также препятствует тому, чтобы пользователь прокрутил список. Таким образом, я думаю лучший способ сделать, это должно добавить ReadOnlyAttributes к свойствам во времени выполнения. Есть ли некоторый другой путь?

5
задан Eric Anastas 23 February 2010 в 00:16
поделиться

2 ответа

Поскольку вы реализуете ICustomTypeDescriptor , нет необходимости добавлять какие-либо атрибуты; вы можете просто переопределить IsReadOnly в дескрипторе PropertyDescriptor . Я думаю, должно быть довольно просто написать промежуточный тип, который имитирует (через ICustomTypeDescriptor и TypeConverter ) завернутый тип, но всегда возвращает экземпляры PropertyDesciptor только для чтения? Дайте мне знать, если вам нужен пример (хотя это не тривиально ).

Вы также можете проверить, есть ли что-то вроде этого .

2
ответ дан 13 December 2019 в 22:06
поделиться

Я бы посоветовал написать настраиваемый элемент управления, который наследуется от элемента управления propertygrid, и в этом настраиваемом элементе управления иметь логическое значение только для чтения, а затем переопределить некоторые вещи и проверьте, если (только для чтения), то отмените действие

0
ответ дан 13 December 2019 в 22:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: