Learning Resources
Â
Adding list items with a Collection editor
Collection Editor
Provides a user interface that can edit most types of collections at design time.
The CollectionEditor type exposes the following members.
 | Name | Description |
---|---|---|
CollectionEditor | Initializes a new instance of the CollectionEditor class using the specified collection type. |
 | Name | Description |
---|---|---|
CollectionItemType | Gets the data type of each item in the collection. | |
CollectionType | Gets the data type of the collection object. | |
Context | Gets a type descriptor that indicates the current context. | |
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. | |
IsDropDownResizable | Gets a value indicating whether drop-down editors should be resizable by the user. (Inherited from UITypeEditor.) | |
NewItemTypes | Gets the available types of items that can be created for this collection. |
 | Name | Description |
---|---|---|
CancelChanges | Cancels changes to the collection. | |
CanRemoveInstance | Indicates whether original members of the collection can be removed. | |
CanSelectMultipleInstances | Indicates whether multiple collection items can be selected at once. | |
CreateCollectionForm | Creates a new form to display and edit the current collection. | |
CreateCollectionItemType | Gets the data type that this collection contains. | |
CreateInstance | Creates a new instance of the specified collection item type. | |
CreateNewItemTypes | Gets the data types that this collection editor can contain. | |
DestroyInstance | Destroys the specified instance of the object. | |
EditValue(IServiceProvider, Object) | Edits the value of the specified object using the editor style indicated by the GetEditStyle method. (Inherited from UITypeEditor.) | |
EditValue(ITypeDescriptorContext, IServiceProvider, Object) | Edits the value of the specified object using the specified service provider and context. (Overrides UITypeEditor.EditValue(ITypeDescriptorContext, IServiceProvider, Object).) | |
Equals(Object) | Determines whether the specified Object is equal to the current Object. (Inherited from Object.) | |
Finalize | Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. (Inherited from Object.) | |
GetDisplayText | Retrieves the display text for the given list item. | |
GetEditStyle() | Gets the editor style used by the EditValue method. (Inherited from UITypeEditor.) | |
GetEditStyle(ITypeDescriptorContext) | Gets the edit style used by the EditValue method. (Overrides UITypeEditor.GetEditStyle(ITypeDescriptorContext).) | |
GetHashCode | Serves as a hash function for a particular type. (Inherited from Object.) | |
GetItems | Gets an array of objects containing the specified collection. | |
GetObjectsFromInstance | Returns a list containing the given object | |
GetPaintValueSupported() | Indicates whether this editor supports painting a representation of an object's value. (Inherited from UITypeEditor.) | |
GetPaintValueSupported(ITypeDescriptorContext) | Indicates whether the specified context supports painting a representation of an object's value within the specified context. (Inherited from UITypeEditor.) | |
GetService | Gets the requested service, if it is available. | |
GetType | Gets the Type of the current instance. (Inherited from Object.) | |
MemberwiseClone | Creates a shallow copy of the current Object. (Inherited from Object.) | |
PaintValue(PaintValueEventArgs) | Paints a representation of the value of an object using the specified PaintValueEventArgs. (Inherited from UITypeEditor.) | |
PaintValue(Object, Graphics, Rectangle) | Paints a representation of the value of the specified object to the specified canvas. (Inherited from UITypeEditor.) | |
SetItems | Sets the specified array as the items of the collection. | |
ShowHelp | Displays the default Help topic for the collection editor. | |
ToString | Returns a string that represents the current object. (Inherited from Object.) |
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;
Example
This example shows how to create a control named ContactCollectionEditor that implements a custom collection editor. The example shows how to specify the exact type of the object that a page developer can add to the control's collection property when using a custom collection editor. You associate a collection editor with a collection property (or the type of the property) by applying the EditorAttribute to the collection property of the control.
If you use a strongly typed IList implementation for your collection property, and all the objects in the collection are of the same type, you do not need a custom collection editor. In that case, you can rely on the built-in CollectionEditor as the property editor because CollectionEditor infers the object type from the type of the Items property of the IList implementation. You should use a typed collection whenever possible. However, if you use a collection such as ArrayList as the type of a controls' collection property, you need a custom collection editor to specify the collection items' object type.
The ContactCollectionEditor described in this example is used by the Contacts property of the QuickContacts control described in Web Control Collection Property Example. It enables objects of type Contact to be added to the Contacts property through a collection editor user interface (UI). The ContactCollectionEditor class derives fromCollectionEditor and overrides the CreateCollectionItemType method to return the Contact type.
If the collection property of your control contains objects of different types, implement a collection editor similar to the example but override the CreateNewItemTypes method instead of the CreateCollectionItemType method and return the correct item types.
// 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); } } }
Â