cloudflight
2024-06-17 b62f5f0104845c2a3a74707792ebf28a506e24f1
Hydraulic/Hydro.MapUI/WindowsForm/propertyform.cs
@@ -13,8 +13,7 @@
using System.Windows.Forms;
using static Hydro.MapView.MapViewEnum;
using Hydro.MapView.Common;
using DevExpress.XtraEditors;
using System.Threading;
namespace Hydro.MapUI
{
@@ -35,7 +34,7 @@
        {
            _isEnable = isReadOnly;
        }
        public void SetWindows(Form mg)
        {
            if (mg.WindowState == FormWindowState.Maximized)
@@ -178,14 +177,14 @@
        private void PropertyForm_Load_1(object sender, EventArgs e)
        {
            //foreach (var item in Enum.GetValues(typeof(MapObjectType)))
            //{
            //    comboBox_type.Items.Add(item);
            //}
            //comboBox_type.SelectedIndex = 0;
            //selectionSets = new List<SelectionSet>();
            //selectionSet = new SelectionSet();
            //listBox1.DataSource = selectionSet.View;
            foreach (var item in Enum.GetValues(typeof(MapObjectType)))
            {
                comboBox_type.Items.Add(item);
            }
            comboBox_type.SelectedIndex = 0;
            selectionSets = new List<SelectionSet>();
            selectionSet = new SelectionSet();
            listBox1.DataSource = selectionSet.View;
            //listBox1.DisplayMember = "IDType";
        }
@@ -195,81 +194,80 @@
        }
        void RefreshListBox()
        {
            //if (selectionSet == null) return;
            //string txt = comboBox_type.SelectedItem.ToString();
            //MapObjectType selectedType = (MapObjectType)Enum.Parse(typeof(MapObjectType), txt);
            //// 使用 LINQ 查询筛选选择集
            //selectionSet.filterType = selectedType;
            //selectionSet.FilterString = textBox_search.Text;
            if (selectionSet == null) return;
            string txt = comboBox_type.SelectedItem.ToString();
            MapObjectType selectedType = (MapObjectType)Enum.Parse(typeof(MapObjectType), txt);
            // 使用 LINQ 查询筛选选择集
            selectionSet.filterType = selectedType;
            selectionSet.FilterString = textBox_search.Text;
            //listBox1.SelectedIndexChanged -= listBox1_SelectedIndexChanged;
            listBox1.SelectedIndexChanged -= listBox1_SelectedIndexChanged;
            ////listBox1.DisplayMember = "ID";
            ////// 重新绑定选择集列表
            ////listBox1.DataSource = selectionSet.View;
            //listBox1.DataSource = null;
            ////listBox1.DisplayMember = "IDType";
            //listBox1.DisplayMember = "ID";
            //// 重新绑定选择集列表
            //listBox1.DataSource = selectionSet.View;
            listBox1.DataSource = null;
            //listBox1.DisplayMember = "IDType";
            listBox1.DataSource = selectionSet.View;
            //listBox1.SelectedIndexChanged += listBox1_SelectedIndexChanged;
            listBox1.SelectedIndexChanged += listBox1_SelectedIndexChanged;
        }
        private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            //if (listBox1.SelectedItems.Count == 0)
            //{
            //    return;
            //}
            //else if (listBox1.SelectedItems.Count == 1)
            //{
            //    var objID = listBox1.SelectedItems[0];
            //    var findlist = selectionSet.net.MapObjects.FindAll(o => o.ID == objID);
            //    if (findlist.Count <= 0) return;
            //    IBaseViewModel mapObject = findlist[0];// selectionSet.selectedObjects.Find(obj => obj.ID == ((MapObject)listBox1.SelectedItems[0]).ID);
            //    if (mapObject != null) SetObj(mapObject);
            //    GlobalObject.map.selectedObjs.ForEach(o => o.Selected = false); ;
            //    GlobalObject.map.selectedObjs.Clear();
            //    GlobalObject.map.selectedObjs.Add(mapObject);
            //    mapObject.Selected = true;
            //    GlobalObject.map.SetMapInvalidate();
            //}
            //else
            //{
            //    List<IBaseViewModel> list = new List<IBaseViewModel>();
            //    foreach (var o in listBox1.SelectedItems)
            //    {
            //        var objID = listBox1.SelectedItems[0];
            //        IBaseViewModel mapObject = selectionSet. net.MapObjects.FindAll(obj => obj.ID == objID)[0];
            //        list.Add(mapObject);
            //    }
            //    ShowProperties( list);
            //    GlobalObject.map.selectedObjs.ForEach(o => o.Selected = false); ;
            //    GlobalObject.map.selectedObjs.Clear();
            //    list.ForEach(o=>o.Selected=true);
            //    GlobalObject.map.selectedObjs.AddRange(list);
            //    GlobalObject.map.SetMapInvalidate();
            //}
            if (listBox1.SelectedItems.Count == 0)
            {
                return;
            }
            else if (listBox1.SelectedItems.Count == 1)
            {
                var objID = listBox1.SelectedItems[0];
                var findlist = selectionSet.net.MapObjects.FindAll(o => o.ID == objID);
                if (findlist.Count <= 0) return;
                IBaseViewModel mapObject = findlist[0];// selectionSet.selectedObjects.Find(obj => obj.ID == ((MapObject)listBox1.SelectedItems[0]).ID);
                if (mapObject != null) SetObj(mapObject);
                GlobalObject.map.selectedObjs.ForEach(o => o.Selected = false); ;
                GlobalObject.map.selectedObjs.Clear();
                GlobalObject.map.selectedObjs.Add(mapObject);
                mapObject.Selected = true;
                GlobalObject.map.SetMapInvalidate();
            }
            else
            {
                List<IBaseViewModel> list = new List<IBaseViewModel>();
                foreach (var o in listBox1.SelectedItems)
                {
                    var objID = listBox1.SelectedItems[0];
                    IBaseViewModel mapObject = selectionSet. net.MapObjects.FindAll(obj => obj.ID == objID)[0];
                    list.Add(mapObject);
                }
                ShowProperties( list);
                GlobalObject.map.selectedObjs.ForEach(o => o.Selected = false); ;
                GlobalObject.map.selectedObjs.Clear();
                list.ForEach(o=>o.Selected=true);
                GlobalObject.map.selectedObjs.AddRange(list);
                GlobalObject.map.SetMapInvalidate();
            }
           
        }
        private void listBox1_DoubleClick(object sender, EventArgs e)
        {
            //if (listBox1.SelectedItems.Count == 1)
            //{
            //    //IBaseViewModel mapObject = (IBaseViewModel)listBox1.SelectedItems[0];
            //    var objID = listBox1.SelectedItems[0];
            //    IBaseViewModel mapObject = selectionSet.net.MapObjects.FindAll(obj => obj.ID == objID)[0];
            //    GlobalObject.map.setCenter (mapObject);
            if (listBox1.SelectedItems.Count == 1)
            {
                //IBaseViewModel mapObject = (IBaseViewModel)listBox1.SelectedItems[0];
                var objID = listBox1.SelectedItems[0];
                IBaseViewModel mapObject = selectionSet.net.MapObjects.FindAll(obj => obj.ID == objID)[0];
                GlobalObject.map.setCenter (mapObject);
            //    GlobalObject.map.SetMapInvalidate();
            //}
                GlobalObject.map.SetMapInvalidate();
            }
        }
        private void PropertyForm_FormClosing(object sender, FormClosingEventArgs e)
        {
@@ -346,13 +344,13 @@
        private void checkBox_OnlyShowSelected_CheckedChanged(object sender, EventArgs e)
        {
            //selectionSet.OnlyViewSelected = checkBox_OnlyShowSelected.Checked;
            //RefreshListBox();
            selectionSet.OnlyViewSelected = checkBox_OnlyShowSelected.Checked;
            RefreshListBox();
        }
        
        private void label_lock_Click(object sender, EventArgs e)
        {
            var label_lock = (LabelControl)sender;
            var label_lock = (Label)sender;
            GlobalObject.LockSelect=!GlobalObject.LockSelect;
            if (GlobalObject.LockSelect)
@@ -368,7 +366,7 @@
        }
        private void label_filter_Click(object sender, EventArgs e)
        {
            var label_lock = (LabelControl)sender;
            var label_lock = (Label)sender;
           
            TagList tags = new TagList();
@@ -409,35 +407,35 @@
        private void PropertyForm_KeyDown(object sender, KeyEventArgs e)
        {
            //Ctrl+A,则选中当前listbox中的所有项
            //if (e.Control && e.KeyCode == Keys.A)
            //{
            //    for (int i = 0; i < listBox1.Items.Count; i++)
            //    {
            //        listBox1.SetSelected(i, true);
            //    }
            //}
            if (e.Control && e.KeyCode == Keys.A)
            {
                for (int i = 0; i < listBox1.Items.Count; i++)
                {
                    listBox1.SetSelected(i, true);
                }
            }
        }
        private void 全选ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //listBox1.SelectedIndexChanged -= listBox1_SelectedIndexChanged;
            //for (int i = 0; i < listBox1.Items.Count; i++)
            //{
            //    listBox1.SetSelected(i, true);
            //}
            //listBox1.SelectedIndexChanged += listBox1_SelectedIndexChanged;
            //this.propertyGrid.SelectedObjects =selectionSet. CurrentSelectedObjects?.ToArray();
            //GlobalObject.map.selectedObjs.ForEach(o => o.Selected = false);
            //if (selectionSet.CurrentSelectedObjects!=null)
            //{
            //    GlobalObject.map.selectedObjs.AddRange(selectionSet.CurrentSelectedObjects);
            //    selectionSet.CurrentSelectedObjects.ForEach(o =>
            //    {
            //        o.Selected = true;
            //    });
            //}
            //GlobalObject.map.SetMapInvalidate();
            listBox1.SelectedIndexChanged -= listBox1_SelectedIndexChanged;
            for (int i = 0; i < listBox1.Items.Count; i++)
            {
                listBox1.SetSelected(i, true);
            }
            listBox1.SelectedIndexChanged += listBox1_SelectedIndexChanged;
            this.propertyGrid.SelectedObjects =selectionSet. CurrentSelectedObjects?.ToArray();
            GlobalObject.map.selectedObjs.ForEach(o => o.Selected = false);
            if (selectionSet.CurrentSelectedObjects!=null)
            {
                GlobalObject.map.selectedObjs.AddRange(selectionSet.CurrentSelectedObjects);
                selectionSet.CurrentSelectedObjects.ForEach(o =>
                {
                    o.Selected = true;
                });
            }
            GlobalObject.map.SetMapInvalidate();
@@ -446,13 +444,13 @@
        private void listBox1_MouseDown(object sender, MouseEventArgs e)
        {
            //if (e.Button == MouseButtons.Right)
            //{
            //    if (listBox1.SelectedItems.Count > 0)
            //    {
            //        contextMenuStrip1.Show(listBox1, e.Location);
            //    }
            //}
            if (e.Button == MouseButtons.Right)
            {
                if (listBox1.SelectedItems.Count > 0)
                {
                    contextMenuStrip1.Show(listBox1, e.Location);
                }
            }
        }
    }