From 562fe6d0615eecf92a7e5c5edf9d316f8295b199 Mon Sep 17 00:00:00 2001
From: wells.liu <wells.liu@broconcentric.com>
Date: 星期五, 10 七月 2020 17:16:55 +0800
Subject: [PATCH] Merge branch 'master' of http://gitblit.broconcentric.com:8088/r/M071

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

diff --git a/src/Bro.M071.Process/UI/M071_MainForm.cs b/src/Bro.M071.Process/UI/M071_MainForm.cs
index 938e116..17b79c9 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;
                };
         }
 
@@ -67,7 +69,8 @@
 
                 cvImage.Elements.Clear();
                 lvMeasures.Items.Clear();
-                txtBarcode.ReadOnly = Config.IsBarcodeManulInputBlocked;
+
+                txtBarcode.Enabled = !Config.IsBarcodeManualInputBlocked;
 
                 Config.MeasurementUnitCollection.ForEach(u =>
                 {
@@ -98,6 +101,14 @@
 
             Process_M071.OnFullResetDone -= Process_M071_FullResetDone;
             Process_M071.OnFullResetDone += Process_M071_FullResetDone;
+
+            Config.PropertyChanged -= Config_PropertyChanged;
+            Config.PropertyChanged += Config_PropertyChanged;
+        }
+
+        private void Config_PropertyChanged(object sender, PropertyChangedEventArgs e)
+        {
+            txtBarcode.Enabled = !Config.IsBarcodeManualInputBlocked;
         }
 
         #region 鍥剧墖鍖哄彸閿彍鍗�
@@ -119,10 +130,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 +213,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