private static ParameterValueEditor EditorWithManualMultipleSelect(ParameterInfo parameterInfo) { // Выбор нескольких значений из вручную сформированного списка var parameterValueControl = EditorFactory.CreateArrayEditor(parameterInfo.Type); var parameterValueEditor = EditorFactory.CreateSimpleEditor(parameterInfo.Type); var selectValueView = new SelectMultipleValueView(parameterValueEditor); var selectValueDlg = new DialogView <SelectMultipleValueView>(selectValueView); var editor = new ParameterValueEditor(parameterValueControl) { ShowNullButton = false, ShowSelectButton = true }; editor.ChangingValue += (sender, args) => { args.Value = parameterValueControl.CastArrayValue(args.Value as IEnumerable); args.Label = parameterValueControl.FormatArrayValue(args.Value as IEnumerable); }; editor.SelectValue += (sender, args) => { args.Cancel = true; selectValueDlg.View.SelectedValues = editor.Value as IEnumerable; if (selectValueDlg.ShowDialog() == DialogResult.OK) { args.Value = selectValueDlg.View.SelectedValues; args.Cancel = false; } }; return(editor); }