2008-10-03 6 views
2

Я работаю над приложением для редактирования пар имя/значение, используя сетку свойств. Некоторые свойства в моем файле класса - коллекции ListDictionary. Есть ли атрибут редактора, который я могу применить в объявлении свойства, который заставит Редактор коллекции работать во время выполнения? Если нет, можно ли наследовать от ComponentModel.Design.CollectionEditor для использования во время выполнения? Мне нужно добавить, удалить и отредактировать значения коллекции. Большое спасибо, ТерриРедактор коллекции во время выполнения

ответ

3

из Codeproject статьи [http://www.codeproject.com/KB/cs/dzcollectioneditor.aspx][1]

Есть три требования, которым коллекция должна соответствовать, чтобы быть успешно сохранился с CollectionEditor:

  1. Во-первых, коллекция должна реализовывать интерфейс IList (наследующий от System.Collections.CollectionBase в большинстве случаев лучший вариант).
  2. Во-вторых, он должен иметь свойство Indexer (Item in VB.NET). Тип это свойство используется CollectionEditor, чтобы определить тип по умолчанию экземпляров, которые будет добавлять в коллекцию.

    Чтобы лучше понять, как это работает, взгляните на GetItemType() функции CustomCollectionEditorForm:.

    защищенный виртуальный тип GetItemType (IList Coll) { PropertyInfo пи = coll.GetType() GetProperty («Элемент», новый Тип [] {typeof (int)}); вернуть pi.PropertyType }

  3. В-третьих, класс коллекции должен реализовать один или оба из следующих методов: Добавление и AddRange. Хотя IList интерфейс имеет элемент Add и CollectionBase реализует IList, вы до сих пор реализовать метод Add для вашей коллекции, учитывая, что CollectionBase объявляет явную реализацию члены Добавить участника в IList в. Дизайнер сериализует коллекцию в соответствии с тем, какой метод вы реализовали . Если вы установили , то AddRange имеет значение .

В этой статье вы найдете все, что необходимо для реализации вашей коллекции на сетке свойств

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