Ejemplo n.º 1
0
        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);
        }