public void OnEditColumns()
            {
                ComboBoxColumnEditor editor  = new ComboBoxColumnEditor(this.Owner.Columns);
                IUIService           service = base.Component.Site.GetService(typeof(IUIService)) as IUIService;

                if (service != null)
                {
                    if (service.ShowDialog(editor) == DialogResult.OK)
                    {
                        IComponentChangeService iccs = (IComponentChangeService)GetService(typeof(IComponentChangeService));
                        iccs.OnComponentChanging(this.Owner, null);
                        this.Owner.Columns.AddRange(editor.NewCollection);
                        iccs.OnComponentChanged(this.Owner, null, null, null);
                        designerActionSvc.HideUI(this.Owner);
                    }
                }
                editor.Dispose();
            }
        public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value)
        {
            IWindowsFormsEditorService edSvc = (IWindowsFormsEditorService)provider.GetService(typeof(IWindowsFormsEditorService));

            if (edSvc == null)
            {
                return(value);
            }

            using (ComboBoxColumnEditor form = new ComboBoxColumnEditor(value))
            {
                if (edSvc.ShowDialog(form) == DialogResult.OK)
                {
                    IComponentChangeService iccs = (IComponentChangeService)context.GetService(typeof(IComponentChangeService));
                    iccs.OnComponentChanging(context.Instance, null);
                    (value as ComboBoxColumnCollection).AddRange(form.NewCollection);
                    iccs.OnComponentChanged(context.Instance, null, null, null);
                }
            }

            return(value);
        }