| | |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using System.Windows.Forms; |
| | | using static Hydro.MapView.MapViewEnum; |
| | | using static Yw.WinFrmUI.Q3D.MapViewEnum; |
| | | |
| | | namespace Hydro.MapView |
| | | namespace Yw.WinFrmUI.Q3D |
| | | { |
| | | public interface IBaseViewModel |
| | | { |
| | |
| | | [Description("标高")] |
| | | [DisplayName("标高")] |
| | | [Browsable(true)] |
| | | float Elev { get; set; } |
| | | float Z { get; set; } |
| | | |
| | | [Category("其他参数")] |
| | | [Description("对象的等级")] |
| | |
| | | string IDType { get; }// => Type.ToString()+"\t"+ ID; |
| | | MapObjectType GetTypeString(); |
| | | |
| | | TagList Tags { get; set; } |
| | | //TagList Tags { get; set; } |
| | | |
| | | //string TagsString { get; set; } |
| | | |
| | |
| | | } |
| | | } |
| | | |
| | | public class MyEditor : UITypeEditor |
| | | { |
| | | public override UITypeEditorEditStyle GetEditStyle(ITypeDescriptorContext context) |
| | | { |
| | | return UITypeEditorEditStyle.Modal; |
| | | } |
| | | |
| | | |
| | | public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value) |
| | | { |
| | | List<string> tags = value as List<string>; |
| | | |
| | | // Create and show dialog |
| | | TagEditorForm form = new TagEditorForm(tags); |
| | | //form弹出时,位置在鼠标位置 |
| | | form.StartPosition = FormStartPosition.Manual; |
| | | form.Location =new Point( Cursor.Position.X-form.Width+10,Cursor.Position.Y-10); |
| | | |
| | | //if (form.ShowDialog() == DialogResult.OK) |
| | | //{ |
| | | |
| | | //} |
| | | form.ShowDialog(); |
| | | return form.Tags; |
| | | //return base.EditValue(context, provider, value); |
| | | } |
| | | } |
| | | |
| | | public class TagEditorForm : Form |
| | | { |
| | | public List<string> Tags { get; set; } |
| | | |
| | | private ListBox listBox; |
| | | private TextBox tb_text; |
| | | |
| | | public TagEditorForm(List<string> tags) |
| | | { |
| | | Tags = tags; |
| | | |
| | | |
| | | // Initialize ListBox |
| | | listBox = new ListBox(); |
| | | listBox.DataSource = Tags; |
| | | listBox.Dock = DockStyle.Fill; |
| | | this.Controls.Add(listBox); |
| | | |
| | | // Add buttons for add, remove, update operations |
| | | tb_text = new TextBox(); |
| | | tb_text.Dock = DockStyle.Top; |
| | | |
| | | this.Controls.Add(tb_text); |
| | | Button addButton = new Button(); |
| | | addButton.Dock = DockStyle.Bottom; |
| | | addButton.Text = "添加"; |
| | | addButton.Click += AddButton_Click; |
| | | this.Controls.Add(addButton); |
| | | |
| | | Button removeButton = new Button(); |
| | | removeButton.Dock = DockStyle.Bottom; |
| | | removeButton.Text = "删除"; |
| | | removeButton.Click += RemoveButton_Click; |
| | | this.Controls.Add(removeButton); |
| | | |
| | | Button updateButton = new Button(); |
| | | updateButton.Dock = DockStyle.Bottom; |
| | | updateButton.Text = "更新"; |
| | | updateButton.Click += UpdateButton_Click; |
| | | this.Controls.Add(updateButton); |
| | | |
| | | Panel panel = new Panel(); |
| | | updateButton.Dock = DockStyle.Bottom; |
| | | this.Controls.Add(panel); |
| | | |
| | | Button btn_ok = new Button(); |
| | | btn_ok.Dock=DockStyle.Left; |
| | | btn_ok.Click+=(o,e) => { this.DialogResult = DialogResult.OK; }; |
| | | btn_ok.Text = "确定"; |
| | | panel.Controls.Add(btn_ok); |
| | | |
| | | Button btn_cancel = new Button(); |
| | | btn_cancel.Dock = DockStyle.Right; |
| | | btn_ok.Click += (o, e) => { this.DialogResult = DialogResult.Cancel; }; |
| | | btn_cancel.Text = "取消"; |
| | | panel.Controls.Add(btn_cancel); |
| | | |
| | | listBox.SelectedIndexChanged += (o,e) => |
| | | { |
| | | if (listBox.SelectedItem!=null) |
| | | tb_text.Text= listBox.SelectedItem.ToString(); |
| | | }; |
| | | this.Icon =Icon.ExtractAssociatedIcon(Application.ExecutablePath); |
| | | } |
| | | |
| | | private void AddButton_Click(object sender, EventArgs e) |
| | | { |
| | | |
| | | // 在listBox中按tb_text的内容,添加新的tag |
| | | if (tb_text.Text != null && tb_text.Text != "") |
| | | { |
| | | if (Tags == null) |
| | | Tags = new List<string>(); |
| | | Tags.Add(tb_text.Text); |
| | | listBox.DataSource = null; |
| | | listBox.DataSource = Tags; |
| | | } |
| | | |
| | | } |
| | | |
| | | private void RemoveButton_Click(object sender, EventArgs e) |
| | | { |
| | | //删除listBox中选中的tag |
| | | if (listBox.SelectedItem != null) |
| | | { |
| | | |
| | | Tags.Remove(listBox.SelectedItem.ToString()); |
| | | listBox.DataSource = null; |
| | | listBox.DataSource = Tags; |
| | | } |
| | | // Remove tag |
| | | } |
| | | |
| | | private void UpdateButton_Click(object sender, EventArgs e) |
| | | { |
| | | // 在listBox中按tb_text的内容,更新tag,但是不改变顺序 |
| | | if (listBox.SelectedItem != null) |
| | | { |
| | | |
| | | Tags[listBox.SelectedIndex] = tb_text.Text; |
| | | listBox.DataSource = null; |
| | | listBox.DataSource = Tags; |
| | | } |
| | | } |
| | | } |
| | | } |