Пример редактора коллекций

Visual Studio 2010

Обновлен: Ноябрь 2007

В этом примере показано, как создать элемент управления с именем ContactCollectionEditor, который реализует пользовательский редактор коллекций. В примере показано, как указать точный тип объекта, который разработчик страницы может добавить к свойству коллекции элементов управления при использовании пользовательского редактора коллекций. Свяжите редактор коллекций со свойством коллекции (или типом свойства), применив объект EditorAttribute к свойству коллекции элемента управления.

Если используется строго типизированная реализация IList для свойства коллекции и все объекты в коллекции имеют один и тот же тип, пользовательский редактор коллекций не требуется. В этом случае можно использовать встроенный объект CollectionEditor как редактор свойств, так как объект CollectionEditor выводит тип объекта из типа свойства Items реализации IList. Рекомендуется использовать типизированную коллекцию, где это возможно. Однако если используется коллекция, такая как ArrayList, в качестве типа свойства коллекции элементов управления, требуется пользовательский редактор коллекций, чтобы указать тип объекта элементов коллекции.

Объект ContactCollectionEditor, описанный в этом примере, используется свойством Contacts элемента управления QuickContacts, описанного в разделе Пример свойства-коллекции веб-элементов. Он позволяет добавлять объекты типа Contact к свойству Contacts через пользовательский интерфейс редактора коллекций. Класс ContactCollectionEditor происходит от CollectionEditor и переопределяет метод CreateCollectionItemType, чтобы возвратить тип Contact.

Если свойство коллекции элемента управления содержит объекты других типов, реализация редактора коллекций будет такой же, как в этом примере, но с переопределением метода CreateNewItemTypes вместо метода CreateCollectionItemType и возвращением правильных типов элементов.

// ContactCollectionEditor.cs
using System;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Reflection;

namespace Samples.AspNet.CS.Controls
{
    public class ContactCollectionEditor : CollectionEditor
    {
        public ContactCollectionEditor(Type type)
            : base(type)
        {
        }

        protected override bool CanSelectMultipleInstances()
        {
            return false;
        }

        protected override Type CreateCollectionItemType()
        {
            return typeof(Contact);
        }
    }
}


Скомпилируйте редактор ContactCollectionEditor с элементом управления QuickContacts и классом Contacts, указанным в разделе Пример свойства-коллекции веб-элементов. Для компиляции необходимо добавить ссылку на сборку System.Design.

Дополнительные сведения о компиляции и использовании примеров пользовательских элементов управления см. в разделе Примеры связывания пользовательского серверного элемента управления.

Показ: