public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value) { if (context != null && context.Instance != null && provider != null) { object originalValue = value; _context = context; edSvc = (IWindowsFormsEditorService)provider.GetService(typeof(IWindowsFormsEditorService)); _collection = value as IList <T>; _backup = new List <T>(_collection); if (edSvc != null) { CollectionEditorForm collEditorFrm = CreateForm(); collEditorFrm.Init(this); context.OnComponentChanging(); if (edSvc.ShowDialog(collEditorFrm) == DialogResult.OK) { context.OnComponentChanged(); } } } return(value); }