1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- using System;
- using System.Collections.Generic;
- using System.Text;
- using System.Windows.Forms;
- using System.Windows.Forms.Design;
- using System.ComponentModel;
- using System.Drawing;
- using System.Drawing.Design;
- using FastReport.Controls;
- using FastReport.Data;
- namespace FastReport.Map
- {
- internal class SpatialColumnEditor : UITypeEditor
- {
- private IWindowsFormsEditorService edSvc = null;
- private void lb_Click(object sender, EventArgs e)
- {
- edSvc.CloseDropDown();
- }
- public override UITypeEditorEditStyle GetEditStyle(ITypeDescriptorContext context)
- {
- return UITypeEditorEditStyle.DropDown;
- }
- public override object EditValue(ITypeDescriptorContext context,
- IServiceProvider provider, object Value)
- {
- edSvc = (IWindowsFormsEditorService)provider.GetService(typeof(IWindowsFormsEditorService));
- MapLayer layer = null;
- if (context != null && context.Instance is MapLayer)
- layer = context.Instance as MapLayer;
- if (layer != null)
- {
- string[] columnNames = layer.SpatialColumns.ToArray();
- ListBox lb = new ListBox();
- lb.Items.AddRange(columnNames);
- lb.SelectedItem = Value;
- lb.BorderStyle = BorderStyle.None;
- lb.Height = lb.ItemHeight * lb.Items.Count;
- lb.Click += new EventHandler(lb_Click);
- edSvc.DropDownControl(lb);
- if (lb.SelectedIndex >= 0 && lb.SelectedIndex < columnNames.Length)
- return columnNames[lb.SelectedIndex];
- }
- return Value;
- }
- }
- }
|