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);
        }
        protected virtual CollectionEditorForm CreateForm()
        {
            var frm = new CollectionEditorForm();

            frm.Text = FormName();

            return(frm);
        }