This topic has not yet been rated Rate this topic

CollectionEditor Class

Provides a user interface that can edit most types of collections at design time.

System.Object
  System.Drawing.Design.UITypeEditor
    System.ComponentModel.Design.CollectionEditor
      More...

Namespace:  System.ComponentModel.Design
Assembly:  System.Design (in System.Design.dll)
public class CollectionEditor : UITypeEditor

The CollectionEditor type exposes the following members.

  Name Description
Public method CollectionEditor Initializes a new instance of the CollectionEditor class using the specified collection type.
Top
  Name Description
Protected property CollectionItemType Gets the data type of each item in the collection.
Protected property CollectionType Gets the data type of the collection object.
Protected property Context Gets a type descriptor that indicates the current context.
Protected property HelpTopic Gets the Help keyword to display the Help topic or topic list for when the editor's dialog box Help button or the F1 key is pressed.
Public property IsDropDownResizable Gets a value indicating whether drop-down editors should be resizable by the user. (Inherited from UITypeEditor.)
Protected property NewItemTypes Gets the available types of items that can be created for this collection.
Top
  Name Description
Protected method CancelChanges Cancels changes to the collection.
Protected method CanRemoveInstance Indicates whether original members of the collection can be removed.
Protected method CanSelectMultipleInstances Indicates whether multiple collection items can be selected at once.
Protected method CreateCollectionForm Creates a new form to display and edit the current collection.
Protected method CreateCollectionItemType Gets the data type that this collection contains.
Protected method CreateInstance Creates a new instance of the specified collection item type.
Protected method CreateNewItemTypes Gets the data types that this collection editor can contain.
Protected method DestroyInstance Destroys the specified instance of the object.
Public method EditValue(IServiceProvider, Object) Edits the value of the specified object using the editor style indicated by the GetEditStyle method. (Inherited from UITypeEditor.)
Public method EditValue(ITypeDescriptorContext, IServiceProvider, Object) Edits the value of the specified object using the specified service provider and context. (Overrides UITypeEditor.EditValue(ITypeDescriptorContext, IServiceProvider, Object).)
Public method Equals(Object) Determines whether the specified Object is equal to the current Object. (Inherited from Object.)
Protected method Finalize Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. (Inherited from Object.)
Protected method GetDisplayText Retrieves the display text for the given list item.
Public method GetEditStyle Gets the editor style used by the EditValue method. (Inherited from UITypeEditor.)
Public method GetEditStyle(ITypeDescriptorContext) Gets the edit style used by the EditValue method. (Overrides UITypeEditor.GetEditStyle(ITypeDescriptorContext).)
Public method GetHashCode Serves as a hash function for a particular type. (Inherited from Object.)
Protected method GetItems Gets an array of objects containing the specified collection.
Protected method GetObjectsFromInstance Returns a list containing the given object
Public method GetPaintValueSupported Indicates whether this editor supports painting a representation of an object's value. (Inherited from UITypeEditor.)
Public method GetPaintValueSupported(ITypeDescriptorContext) Indicates whether the specified context supports painting a representation of an object's value within the specified context. (Inherited from UITypeEditor.)
Protected method GetService Gets the requested service, if it is available.
Public method GetType Gets the Type of the current instance. (Inherited from Object.)
Protected method MemberwiseClone Creates a shallow copy of the current Object. (Inherited from Object.)
Public method PaintValue(PaintValueEventArgs) Paints a representation of the value of an object using the specified PaintValueEventArgs. (Inherited from UITypeEditor.)
Public method PaintValue(Object, Graphics, Rectangle) Paints a representation of the value of the specified object to the specified canvas. (Inherited from UITypeEditor.)
Protected method SetItems Sets the specified array as the items of the collection.
Protected method ShowHelp Displays the default Help topic for the collection editor.
Public method ToString Returns a string that represents the current object. (Inherited from Object.)
Top

Notes to Inheritors

This editor can edit collections that have an Item property. The editor can determine the type of the collection from the Item property, if it exists. If the collection does not have this property, or if you want to provide collections of more than one type, you can override certain protected members of this class to customize the editor to support other types of collections.

The following code example uses an EditorAttribute to associate the CollectionEditor with a property.


[EditorAttribute(typeof(System.ComponentModel.Design.CollectionEditor), typeof(System.Drawing.Design.UITypeEditor))]
public ICollection testCollection
{
    get
    {
        return Icollection;
    }
    set
    {
        Icollection = value;
    }
}
private ICollection Icollection;


.NET Framework

Supported in: 4, 3.5, 3.0, 2.0, 1.1, 1.0

Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.
Did you find this helpful?
(2000 characters remaining)
Community Content Add
Annotations FAQ
*** Be carefull ***
Seems that though it is in System.ComponentModel.Design as stated, but it relies on (inherrited from) UITypeEditor which is in System.Drawing.Design. So, either that ref is also needed or System.Design  

Otherwise gives a The type or namespace name 'CollectionEditor' does not exist in the namespace 'System.ComponentModel.Design' (are you missing an assembly reference?) error.

BTW I found a bug report about thius way back in VS2005 (accepted as reporduceable and "will be investigated" by Microsoft, but with no further comments)
Generic Collections Fix
1) create a custom collection editor $0 $0 $0public class GenericCollectionEditor<T>:CollectionEditor$0 $0    {$0 $0        public GenericCollectionEditor(Type Type):base(Type){}$0 $0$0 $0 $0        protected override object SetItems(object editValue, object[] value)$0 $0        {$0 $0            if (editValue == null) { editValue = new List<T>(); }$0 $0            return base.SetItems(editValue, value);$0 $0        }$0 $0$0 $0 $0        protected override object CreateInstance(Type itemType)$0 $0        {$0 $0            if (itemType == typeof(string)) { return ""; }$0 $0            return base.CreateInstance(itemType);$0 $0        }$0 $0    }$0 $0 $0 $0$0 $0 $02) Add the EditorAttribute with the custom collection editor to the property you want to use it$0 $0 $0[System.ComponentModel.Editor(typeof(GenericCollectionEditor<string>), typeof(System.Drawing.Design.UITypeEditor))]$0 $0        public System.Collections.Generic.List<string> MyGenericCollection { get; set; }$0 $0