protected override void OnClone(DataEditor cloned) { base.OnClone(cloned); WebDataEditor wd = cloned as WebDataEditor; wd.SetHolder(_holder); }
public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value) { if (context != null && context.Instance != null && provider != null) { IWindowsFormsEditorService edSvc = (IWindowsFormsEditorService)provider.GetService(typeof(IWindowsFormsEditorService)); if (edSvc != null) { WebDataEditorList felst = context.Instance as WebDataEditorList; if (felst != null) { DataEditorListBox list = new DataEditorListBox(edSvc); edSvc.DropDownControl(list); if (list.Selector != null) { WebDataEditor wd = list.Selector as WebDataEditor; wd.SetHolder(felst.Holder); if (list.Selector is WebDataEditorNone) { value = list.Selector; felst.RemoveEditorByName(context.PropertyDescriptor.Name); } else { list.Selector.ValueField = context.PropertyDescriptor.Name; list.Selector.SetFieldsAttribute(felst); WebDataEditor current = value as WebDataEditor; DlgSetEditorAttributes dlg = list.Selector.GetDataDialog(current); if (dlg != null) { if (edSvc.ShowDialog(dlg) == DialogResult.OK) { dlg.SelectedEditor.ValueField = context.PropertyDescriptor.Name; current = (WebDataEditor)dlg.SelectedEditor.Clone(); value = current; felst.AddEditor(current); } } else { current = (WebDataEditor)list.Selector.Clone(); value = list.Selector; felst.AddEditor(current); } } felst.Holder.OnEditorChanged(context.PropertyDescriptor.Name); } } } } return(value); }