コード例 #1
0
        public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value)
        {
            _editorService = provider.GetService(typeof(IWindowsFormsEditorService)) as IWindowsFormsEditorService;
            if (_editorService == null)
            {
                return(base.EditValue(context, provider, value));
            }

            var report = GetReport(context);

            if (report == null)
            {
                return(base.EditValue(context, provider, value));
            }

            var listBox = new ListBoxEx
            {
                BorderStyle             = BorderStyle.None,
                PaintIndicatorSupported = true,
                ItemHeight = 20
            };

            listBox.Click          += listBox_Click;
            listBox.PaintIndicator += listBox_PaintIndicator;
            listBox.Items.Add(EditorText);

            _dbFields = new List <FieldInfo>();
            _dbFields.AddRange(report.DataSource.DataSourceInfo.ImageFields);
            foreach (var dbField in report.DataSource.DataSourceInfo.TextFields)
            {
                if (dbField.DataType == typeof(string))
                {
                    _dbFields.Add(dbField);
                }
            }
            listBox.Items.AddRange(_dbFields.Select(f => (object)f.Name).ToArray());

            var itemsToDisplay = Math.Min(MaxDisplayListBoxItems, listBox.Items.Count);

            listBox.Height = itemsToDisplay * listBox.ItemHeight;
            if (value != null)
            {
                listBox.SelectedItem = value.ToString();
            }

            _editorService.DropDownControl(listBox);

            if (listBox.SelectedIndex == 0)
            {
                value = base.EditValue(context, provider, value);
            }
            else if (listBox.SelectedIndex > 0)
            {
                var fieldName = listBox.SelectedItem.ToString();
                value = PictureHolder.FromExpression(fieldName);
            }

            _dbFields = null;
            return(value);
        }
コード例 #2
0
 public void ApplyChanges()
 {
     if (radioNone.Checked)
     {
         _pictureHolder = PictureHolder.FromObject(null, null);
     }
     else if (radioFile.Checked)
     {
         _pictureHolder = PictureHolder.FromFile(txtFile.Text, C1FlexReport.GetActualBasePath(_report));
     }
     else if (radioURL.Checked)
     {
         _pictureHolder = PictureHolder.FromUrl(txtURL.Text, C1FlexReport.GetActualBasePath(_report));
     }
     else if (radioExpression.Checked)
     {
         _pictureHolder = PictureHolder.FromExpression(cmbExpression.Expression);
     }
 }