From 78994d1c8243018f6e37717e3ea0a0297d491bd8 Mon Sep 17 00:00:00 2001
From: xcd <834800634@qq.com>
Date: 星期五, 10 七月 2020 13:10:24 +0800
Subject: [PATCH] 标签显示和列表联动修改

---
 src/Bro.M071.Process/UI/M071_MainForm.cs |   40 +++++++++++++++++++++++++++++++++++++++-
 1 files changed, 39 insertions(+), 1 deletions(-)

diff --git a/src/Bro.M071.Process/UI/M071_MainForm.cs b/src/Bro.M071.Process/UI/M071_MainForm.cs
index 938e116..7f507bc 100644
--- a/src/Bro.M071.Process/UI/M071_MainForm.cs
+++ b/src/Bro.M071.Process/UI/M071_MainForm.cs
@@ -38,6 +38,8 @@
                    await Task.Delay(300);
 
                    cvImage.SetScreenSize();
+                   cvImage.OnElementChangedHandle -= CvImage_OnElementChangedHandle;
+                   cvImage.OnElementChangedHandle += CvImage_OnElementChangedHandle;
                };
         }
 
@@ -119,10 +121,45 @@
         #endregion
 
         #region 鏍囩缂栬緫鍖�
+        private async void CvImage_OnElementChangedHandle(Common.Interface.IShapeElement ele)
+        {
+            this.Invoke(new Action(() =>
+            {
+                if (ele is KeyIndicator indicator)
+                {
+                    if (indicator.State == ElementState.Selected)
+                    {
+                        foreach (ListViewItem item in lvMeasures.Items)
+                        {
+                            if (item.Tag.ToString() == indicator.ID)
+                            {
+                                item.Selected = true;
+
+                                lvMeasures.EnsureVisible(item.Index);
+                                break;
+                            }
+                        }
+                    }
+                }
+            }));
+
+            await Task.Delay(100);
+        }
+
         private void lvMeasures_SelectedIndexChanged(object sender, EventArgs e)
         {
             if (lvMeasures.SelectedItems.Count <= 0)
                 return;
+
+            foreach (ListViewItem item in lvMeasures.Items)
+            {
+                item.BackColor = SystemColors.Control;
+            }
+
+            foreach (ListViewItem item in lvMeasures.SelectedItems)
+            {
+                item.BackColor = Color.Orange;
+            }
 
             var ele = cvImage.Elements.FirstOrDefault(u => u.ID == lvMeasures.SelectedItems[0].Tag.ToString());
             propGridKeyIndicator.SelectedObject = ele;
@@ -167,11 +204,12 @@
             if (lvMeasures.SelectedItems.Count <= 0)
                 return;
 
+            cvImage.Elements.ToList().ForEach(u => u.State = ElementState.Normal);
             var ele = cvImage.Elements.FirstOrDefault(u => u.ID == lvMeasures.SelectedItems[0].Tag.ToString());
             if (ele != null)
             {
                 ele.State = ElementState.Selected;
-                cvImage.Invalidate();
+                //cvImage.Invalidate();
             }
         }
         #endregion

--
Gitblit v1.8.0