From b9c79f595e5ad4684d731f968bf120ff8c52dbd8 Mon Sep 17 00:00:00 2001
From: lixiaojun <1287241240@qq.com>
Date: 星期一, 23 十二月 2024 00:42:25 +0800
Subject: [PATCH] 解决重复HydroInfo获取问题

---
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/02-docking/HydroMonitorDockingViewModel.cs                         |    0 
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/00-core/03-calcu/01-result/SimulationCalcuResultHelper.cs   |   12 +
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/02-docking/SetHydroMonitorDockingListDlg.cs                        |    0 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/00-core/HydroMonitorPropHelper.cs                                  |  152 ----------------
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/03-analyse/SetHydroMonitorAnalyseListCtrl.resx                     |    0 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/03-analyse/SetHydroMonitorAnalyseListDlg.resx                      |    0 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/16-evaluation/01-list/HydroWorkingMonitorEvaluationListCtrl.cs                |    2 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/16-evaluation/00-core/HydroWorkingMonitorEvaluationViewModel.cs               |    4 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/01-value/HydroMonitorValueViewModel.cs                             |  146 ++++++++++++++++
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/02-docking/SetHydroMonitorDockingListDlg.resx                      |    0 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/02-docking/SetHydroMonitorDockingListDlg.Designer.cs               |   18 +-
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/01-value/HydroMonitorValueListCtrl.cs                              |    0 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/03-analyse/SetHydroMonitorAnalyseListDlg.cs                        |    0 
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/05-function/SimulationFunctionCtrl.cs                       |   32 +++
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/03-analyse/HydroMonitorAnalyseViewModel.cs                         |    0 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/03-analyse/SetHydroMonitorAnalyseListCtrl.Designer.cs              |    0 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/01-value/HydroMonitorValueListCtrl.Designer.cs                     |    0 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/02-docking/SetHydroMonitorDockingListCtrl.resx                     |    0 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/05-analy/HydroWorkingMonitorAnalyListCtrl.cs                       |    0 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/00-core/HydroMonitorValueExtensions.cs                             |   22 +-
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/05-analy/HydroWorkingMonitorAnalyListCtrl.Designer.cs              |    0 
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/XhsProjectSimulationCorePage.cs               |    8 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/05-analy/HydroWorkingMonitorAnalyListCtrl.resx                     |    0 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/03-analyse/SetHydroMonitorAnalyseListCtrl.cs                       |    0 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/Yw.WinFrmUI.Hydro.Core.csproj                                                 |   11 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/01-value/HydroMonitorValueListCtrl.resx                            |    0 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/02-docking/SetHydroMonitorDockingListCtrl.cs                       |    0 
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/00-core/04-monitor/02-value/SimulationMonitorValueHelper.cs |   92 +--------
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/Yw.WinFrmUI.Hydro.Core.csproj.user                                            |    7 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/02-docking/SetHydroMonitorDockingListCtrl.Designer.cs              |    0 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/03-analyse/SetHydroMonitorAnalyseListDlg.Designer.cs               |   22 +-
 /dev/null                                                                                                     |   10 -
 32 files changed, 245 insertions(+), 293 deletions(-)

diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/00-core/03-calcu/01-result/SimulationCalcuResultHelper.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/00-core/03-calcu/01-result/SimulationCalcuResultHelper.cs
index da2de26..0168620 100644
--- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/00-core/03-calcu/01-result/SimulationCalcuResultHelper.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/00-core/03-calcu/01-result/SimulationCalcuResultHelper.cs
@@ -10,21 +10,29 @@
         /// <summary>
         /// 
         /// </summary>
-        public SimulationCalcuResultHelper(SimulationWorkingHelper workingHelper)
+        public SimulationCalcuResultHelper
+            (
+                SimulationWorkingHelper workingHelper
+            )
         {
             _workingHelper = workingHelper;
             workingHelper.InitialEvent += () => Initial();
             Initial();
         }
 
+        /// <summary>
+        /// 鍒濆鍖栦簨浠�
+        /// </summary>
+        public event Action InitialEvent;
+
         private SimulationWorkingHelper _workingHelper = null;//宸ュ喌杈呭姪绫�
         private Dictionary<string, HydroCalcuVisualResult> _dict;//璁$畻缁撴灉鍙瀛楀吀
-
 
         //鍒濆鍖�
         private void Initial()
         {
             _dict = _workingHelper.CalcuResult?.GetVisualDict();
+            this.InitialEvent?.Invoke();
         }
 
         /// <summary>
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/00-core/04-monitor/02-value/SimulationMonitorValueHelper.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/00-core/04-monitor/02-value/SimulationMonitorValueHelper.cs
index fd39ffb..1a5599a 100644
--- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/00-core/04-monitor/02-value/SimulationMonitorValueHelper.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/00-core/04-monitor/02-value/SimulationMonitorValueHelper.cs
@@ -22,6 +22,7 @@
             _visualListHelper = visualListHelper;
             _monitorHelper = monitorHelper;
             _calcuResultHelper = calcuResultHelper;
+            _calcuResultHelper.InitialEvent += async () => await Update();
         }
 
         private readonly SimulationVisualListHelper _visualListHelper = null;//鍙鍒楄〃杈呭姪绫�
@@ -85,43 +86,24 @@
         /// <summary>
         /// 鏇存柊
         /// </summary>
-        public async void Update(string code, List<HydroMonitorVmo> monitorList)
+        public async Task Update()
         {
-            if (string.IsNullOrEmpty(code))
+            var all = await GetAll();
+            foreach (var item in all)
             {
-                return;
-            }
-            var visual = _visualListHelper.GetVisual(code);
-            if (visual == null)
-            {
-                return;
-            }
-
-            var allValueList = await GetAll();
-            var valueList = allValueList.Where(x => x.Vmo.Relation == code).ToList();
-            valueList.ForEach(x =>
-            {
-                var result = monitorList?.Exists(t => t.Relation == x.Vmo.Relation && t.PropName == x.Vmo.PropName);
-                if (!(result.HasValue && result.Value))
+                if (!item.PropValue.HasValue)
                 {
-                    allValueList.Remove(x);
-                }
-            });
-            monitorList?.ForEach(x =>
-            {
-                var result = valueList?.Exists(t => t.Vmo.Relation == x.Relation && t.Vmo.PropName == x.PropName);
-                if (!(result.HasValue && result.Value))
-                {
-                    double? propValue = null;
-                    var calcuVisualResult = _calcuResultHelper.GetVisual(x.Relation);
+                    var calcuVisualResult = _calcuResultHelper.GetVisual(item.Vmo.Relation);
                     if (calcuVisualResult != null)
                     {
-                        propValue = calcuVisualResult.GetCalcuValue(x.PropName);
+                        var propValue = calcuVisualResult.GetCalcuValue(item.Vmo.PropName);
+                        if (propValue.HasValue)
+                        {
+                            item.UpdatePropValue(propValue.Value);
+                        }
                     }
-                    var vm = new HydroMonitorValueViewModel(x, visual, propValue);
-                    allValueList.Add(vm);
                 }
-            });
+            }
         }
 
         /// <summary>
@@ -138,56 +120,12 @@
         }
 
         /// <summary>
-        /// 鏇存柊
-        /// </summary>
-        public async void Update(string code, List<HydroMonitorVmo> monitorList, List<HydroMonitorDockingViewModel> monitorDockingList)
-        {
-            if (string.IsNullOrEmpty(code))
-            {
-                return;
-            }
-            var visual = _visualListHelper.GetVisual(code);
-            if (visual == null)
-            {
-                return;
-            }
-
-            var allValueList = await GetAll();
-            var valueList = allValueList.Where(x => x.Vmo.Relation == code).ToList();
-            valueList.ForEach(x =>
-            {
-                var result = monitorList?.Exists(t => t.Relation == x.Vmo.Relation && t.PropName == x.Vmo.PropName);
-                if (!(result.HasValue && result.Value))
-                {
-                    allValueList.Remove(x);
-                }
-            });
-            monitorList?.ForEach(x =>
-            {
-                var result = valueList?.Exists(t => t.Vmo.Relation == x.Relation && t.Vmo.PropName == x.PropName);
-                if (!(result.HasValue && result.Value))
-                {
-                    double? propValue = null;
-                    var monitorDocking = monitorDockingList?.Find(t => t.Vmo.Relation == x.Relation && t.Vmo.PropName == x.PropName);
-                    propValue = monitorDocking?.PropValue;
-                    if (!propValue.HasValue)
-                    {
-                        var calcuVisualResult = _calcuResultHelper.GetVisual(x.Relation);
-                        propValue = calcuVisualResult?.GetCalcuValue(x.PropName);
-                    }
-                    var vm = new HydroMonitorValueViewModel(x, visual, propValue);
-                    allValueList.Add(vm);
-                }
-            });
-        }
-
-        /// <summary>
         /// 閲嶇疆
         /// </summary>
-        public async void Reset(List<HydroWorkingMonitorViewModel> allWorkingMonitorList)
+        public async Task Reset(List<HydroWorkingMonitorViewModel> allWorkingMonitorList)
         {
-            var allMonitorValueList = await GetAll();
-            allMonitorValueList.UpdateMonitorValue(allWorkingMonitorList);
+            var all = await GetAll();
+            all.UpdateMonitorValue(allWorkingMonitorList);
         }
 
         /// <summary>
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/05-function/SimulationFunctionCtrl.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/05-function/SimulationFunctionCtrl.cs
index 82cb9c5..0adeba7 100644
--- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/05-function/SimulationFunctionCtrl.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/05-function/SimulationFunctionCtrl.cs
@@ -3,6 +3,7 @@
 using DevExpress.Utils.Extensions;
 using DevExpress.Utils.Svg;
 using DevExpress.XtraCharts;
+using System.Collections.Concurrent;
 using Yw.DAL.Basic;
 using Yw.Vmo;
 
@@ -67,7 +68,7 @@
         private Dictionary<HydroWorkingVmo, bool> _allWorkingCheckedListDict = null;//鎵�鏈夊伐鍐甸�夋嫨鍒楄〃瀛楀吀
         private Dictionary<XhsSchemeVmo, Yw.Model.HydroModelInfo> _allSchemeHydroInfoDict = null;//鎵�鏈夋柟妗堟按鍔涗俊鎭垪琛�
         private Dictionary<XhsSchemeVmo, Dictionary<HydroWorkingVmo, bool>> _allSchemeWorkingCheckedListDict = null;//鎵�鏈夋柟妗堝伐鍐甸�夋嫨鍒楄〃瀛楀吀
-        private readonly object _locker = new();//閿佸畾瀵硅薄
+        private ConcurrentDictionary<string, bool> _gettingHydroInfoDict = new ConcurrentDictionary<string, bool>();//鑾峰彇姘村姏淇℃伅瀛楀吀
 
         /// <summary>
         /// 缁戝畾鏁版嵁
@@ -209,6 +210,10 @@
                     if (_hydroInfo == null)
                     {
                         hydroInfo = await GetHydroInfo(null);
+                        if (hydroInfo == null)
+                        {
+                            return default;
+                        }
                         if (_hydroInfo == null)
                         {
                             _hydroInfo = hydroInfo;
@@ -230,6 +235,10 @@
                 if (!_allSchemeHydroInfoDict.ContainsKey(scheme))
                 {
                     hydroInfo = await GetHydroInfo(scheme);
+                    if (hydroInfo == null)
+                    {
+                        return default;
+                    }
                     if (!_allSchemeHydroInfoDict.ContainsKey(scheme))
                     {
                         _allSchemeHydroInfoDict.Add(scheme, hydroInfo);
@@ -261,6 +270,18 @@
             {
                 return default;
             }
+            string key = $"{_project.ID}-{_projectSite.ID}-{scheme?.ID}";
+            if (_gettingHydroInfoDict.TryGetValue(key, out bool getting))
+            {
+                if (getting)
+                {
+                    return default;
+                }
+            }
+            if (!_gettingHydroInfoDict.TryAdd(key, true))
+            {
+                _gettingHydroInfoDict[key] = true;
+            }
 
             HydroModelRelationVmo relation = null;
             if (scheme == null)
@@ -278,6 +299,7 @@
                 return default;
             }
             var hydroInfo = await BLLFactory<Yw.BLL.HydroModelInfo>.Instance.GetByID(relation.ModelID);
+            _gettingHydroInfoDict[key] = false;
             return hydroInfo;
         }
 
@@ -500,6 +522,10 @@
                 elementWorking.Click += async (sender, e) =>
                 {
                     var hydroInfo = await GetHydroInfo(null, true);
+                    if (hydroInfo == null)
+                    {
+                        return;
+                    }
                     this.ShowProjectSiteWorkingEvent?.Invoke(_project, _projectSite, null, hydroInfo, working, this.svgImg32[4]);
                 };
                 this.elementProjectSiteSimulation.Elements.Add(elementWorking);
@@ -550,6 +576,10 @@
                 elementWorking.Click += async (sender, e) =>
                 {
                     var hydroInfo = await GetHydroInfo(scheme, true);
+                    if (hydroInfo == null)
+                    {
+                        return;
+                    }
                     this.ShowProjectSiteWorkingEvent?.Invoke(_project, _projectSite, scheme, hydroInfo, working, this.svgImg32[4]);
                 };
                 elementScheme.Elements.Add(elementWorking);
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/XhsProjectSimulationCorePage.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/XhsProjectSimulationCorePage.cs
index 05336f7..30dc8eb 100644
--- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/XhsProjectSimulationCorePage.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/XhsProjectSimulationCorePage.cs
@@ -1878,10 +1878,11 @@
                 this.controlContainerBottom.Controls.Clear();
                 this.controlContainerBottom.Controls.Add(monitorValueListCtrl);
                 this.docPnlBottom.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Visible;
-                this.docPnlBottom.Text = "鐩戞祴鍊�";
+                this.docPnlBottom.Text = "浼犳劅鍣ㄦ祴鍊�";
                 this.docPnlBottom.Height = 350;
             }
             var allValueList = await GetMonitorDockingValueList();
+            var calcuResult = GetCalcuResult();
             monitorValueListCtrl.SetBindingData(allValueList);
         }
 
@@ -2547,7 +2548,7 @@
             AddWorking();
         }
 
-        #endregion 褰撳墠宸ュ喌
+        #endregion
 
         #region 閫夋嫨宸ュ喌
 
@@ -2716,8 +2717,7 @@
         //绮惧害璇勪及
         private async void barBtnWorkingEvaluation_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
         {
-            var monitorHelper = GetMonitorHelper();
-            var allMonitorList = await monitorHelper.GetAll();
+            var allMonitorList = await GetMonitorDockingList();
 
             var workingCheckedListHelper = GetWorkingCheckedListHelper();
             var allCheckedWorkingList = workingCheckedListHelper.GetCheckedWorkingList();
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/00-core/HydroMonitorPropHelper.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/00-core/HydroMonitorPropHelper.cs
index 5023712..cd5996d 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/00-core/HydroMonitorPropHelper.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/00-core/HydroMonitorPropHelper.cs
@@ -174,158 +174,6 @@
         }
 
         /// <summary>
-        /// 鑾峰彇鍚嶇О瀛楀吀
-        /// </summary>
-        public static Dictionary<string, string> GetNameDict(string catalog)
-        {
-            if (string.IsNullOrEmpty(catalog))
-            {
-                return default;
-            }
-            var dict = new Dictionary<string, string>();
-            switch (catalog)
-            {
-                case Yw.Hydro.ParterCatalog.Reservoir:
-                    {
-                        dict.Add(MonitorProp.CalcuL, MonitorPropHelper.GetName(MonitorProp.CalcuL));
-                    }
-                    break;
-                case Yw.Hydro.ParterCatalog.Tank:
-                    {
-                        dict.Add(MonitorProp.CalcuL, MonitorPropHelper.GetName(MonitorProp.CalcuL));
-                    }
-                    break;
-                case Yw.Hydro.ParterCatalog.Waterbox:
-                    {
-                        dict.Add(MonitorProp.CalcuL, MonitorPropHelper.GetName(MonitorProp.CalcuL));
-                    }
-                    break;
-                case ParterCatalog.Junction:
-                    {
-                        dict.Add(MonitorProp.CalcuPr, MonitorPropHelper.GetName(MonitorProp.CalcuPr));
-                    }
-                    break;
-                case Yw.Hydro.ParterCatalog.Blunthead:
-                    {
-                        dict.Add(MonitorProp.CalcuPr, MonitorPropHelper.GetName(MonitorProp.CalcuPr));
-                    }
-                    break;
-                case Yw.Hydro.ParterCatalog.Elbow:
-                    {
-                        dict.Add(MonitorProp.CalcuPr, MonitorPropHelper.GetName(MonitorProp.CalcuPr));
-                    }
-                    break;
-                case Yw.Hydro.ParterCatalog.Threelink:
-                    {
-                        dict.Add(MonitorProp.CalcuPr, MonitorPropHelper.GetName(MonitorProp.CalcuPr));
-                    }
-                    break;
-                case Yw.Hydro.ParterCatalog.Fourlink:
-                    {
-                        dict.Add(MonitorProp.CalcuPr, MonitorPropHelper.GetName(MonitorProp.CalcuPr));
-                    }
-                    break;
-                case Yw.Hydro.ParterCatalog.Nozzle:
-                    {
-                        dict.Add(MonitorProp.CalcuPr, MonitorPropHelper.GetName(MonitorProp.CalcuPr));
-                    }
-                    break;
-                case Yw.Hydro.ParterCatalog.Hydrant:
-                    {
-                        dict.Add(MonitorProp.CalcuPr, MonitorPropHelper.GetName(MonitorProp.CalcuPr));
-                    }
-                    break;
-                case Yw.Hydro.ParterCatalog.Meter:
-                    {
-                        dict.Add(MonitorProp.CalcuPr, MonitorPropHelper.GetName(MonitorProp.CalcuPr));
-                    }
-                    break;
-                case Yw.Hydro.ParterCatalog.Flowmeter:
-                    {
-                        dict.Add(MonitorProp.CalcuPr, MonitorPropHelper.GetName(MonitorProp.CalcuPr));
-                    }
-                    break;
-                case Yw.Hydro.ParterCatalog.Pressmeter:
-                    {
-                        dict.Add(MonitorProp.CalcuPr, MonitorPropHelper.GetName(MonitorProp.CalcuPr));
-                    }
-                    break;
-                case Yw.Hydro.ParterCatalog.Pipe:
-                    {
-                        dict.Add(MonitorProp.CalcuQ, MonitorPropHelper.GetName(MonitorProp.CalcuQ));
-                    }
-                    break;
-                case Yw.Hydro.ParterCatalog.Translation:
-                    {
-                        dict.Add(MonitorProp.CalcuQ, MonitorPropHelper.GetName(MonitorProp.CalcuQ));
-                    }
-                    break;
-                case Yw.Hydro.ParterCatalog.Pump:
-                    {
-                        dict.Add(MonitorProp.CalcuQ, MonitorPropHelper.GetName(MonitorProp.CalcuQ));
-                        dict.Add(MonitorProp.CalcuPr1, MonitorPropHelper.GetName(MonitorProp.CalcuPr1));
-                        dict.Add(MonitorProp.CalcuPr2, MonitorPropHelper.GetName(MonitorProp.CalcuPr2));
-                        dict.Add(MonitorProp.CalcuPrd, MonitorPropHelper.GetName(MonitorProp.CalcuPrd));
-                        dict.Add(MonitorProp.CalcuO1, MonitorPropHelper.GetName(MonitorProp.CalcuO1));
-                        dict.Add(MonitorProp.CalcuO2, MonitorPropHelper.GetName(MonitorProp.CalcuO2));
-                        dict.Add(MonitorProp.CalcuH, MonitorPropHelper.GetName(MonitorProp.CalcuH));
-                        dict.Add(MonitorProp.CalcuP, MonitorPropHelper.GetName(MonitorProp.CalcuP));
-                        dict.Add(MonitorProp.CalcuE, MonitorPropHelper.GetName(MonitorProp.CalcuE));
-                    }
-                    break;
-                case Yw.Hydro.ParterCatalog.Valve:
-                    {
-                        dict.Add(MonitorProp.CalcuQ, MonitorPropHelper.GetName(MonitorProp.CalcuQ));
-                        dict.Add(MonitorProp.CalcuPr1, MonitorPropHelper.GetName(MonitorProp.CalcuPr1));
-                        dict.Add(MonitorProp.CalcuPr2, MonitorPropHelper.GetName(MonitorProp.CalcuPr2));
-                        dict.Add(MonitorProp.CalcuO, MonitorPropHelper.GetName(MonitorProp.CalcuO));
-                    }
-                    break;
-                case Yw.Hydro.ParterCatalog.Resistance:
-                    {
-                        dict.Add(MonitorProp.CalcuQ, MonitorPropHelper.GetName(MonitorProp.CalcuQ));
-                        dict.Add(MonitorProp.CalcuPr1, MonitorPropHelper.GetName(MonitorProp.CalcuPr1));
-                        dict.Add(MonitorProp.CalcuPr2, MonitorPropHelper.GetName(MonitorProp.CalcuPr2));
-                        dict.Add(MonitorProp.CalcuPrd, MonitorPropHelper.GetName(MonitorProp.CalcuPrd));
-                        dict.Add(MonitorProp.CalcuO1, MonitorPropHelper.GetName(MonitorProp.CalcuO1));
-                        dict.Add(MonitorProp.CalcuO2, MonitorPropHelper.GetName(MonitorProp.CalcuO2));
-                        dict.Add(MonitorProp.CalcuT1, MonitorPropHelper.GetName(MonitorProp.CalcuT1));
-                        dict.Add(MonitorProp.CalcuT2, MonitorPropHelper.GetName(MonitorProp.CalcuT2));
-                        dict.Add(MonitorProp.CalcuTd, MonitorPropHelper.GetName(MonitorProp.CalcuTd));
-                    }
-                    break;
-                case Yw.Hydro.ParterCatalog.Exchanger:
-                    {
-                        dict.Add(MonitorProp.CalcuQ, MonitorPropHelper.GetName(MonitorProp.CalcuQ));
-                        dict.Add(MonitorProp.CalcuPr1, MonitorPropHelper.GetName(MonitorProp.CalcuPr1));
-                        dict.Add(MonitorProp.CalcuPr2, MonitorPropHelper.GetName(MonitorProp.CalcuPr2));
-                        dict.Add(MonitorProp.CalcuPrd, MonitorPropHelper.GetName(MonitorProp.CalcuPrd));
-                        dict.Add(MonitorProp.CalcuO1, MonitorPropHelper.GetName(MonitorProp.CalcuO1));
-                        dict.Add(MonitorProp.CalcuO2, MonitorPropHelper.GetName(MonitorProp.CalcuO2));
-                        dict.Add(MonitorProp.CalcuT1, MonitorPropHelper.GetName(MonitorProp.CalcuT1));
-                        dict.Add(MonitorProp.CalcuT2, MonitorPropHelper.GetName(MonitorProp.CalcuT2));
-                        dict.Add(MonitorProp.CalcuTd, MonitorPropHelper.GetName(MonitorProp.CalcuTd));
-                    }
-                    break;
-                case Yw.Hydro.ParterCatalog.Compressor:
-                    {
-                        dict.Add(MonitorProp.CalcuQ, MonitorPropHelper.GetName(MonitorProp.CalcuQ));
-                        dict.Add(MonitorProp.CalcuPr1, MonitorPropHelper.GetName(MonitorProp.CalcuPr1));
-                        dict.Add(MonitorProp.CalcuPr2, MonitorPropHelper.GetName(MonitorProp.CalcuPr2));
-                        dict.Add(MonitorProp.CalcuPrd, MonitorPropHelper.GetName(MonitorProp.CalcuPrd));
-                        dict.Add(MonitorProp.CalcuO1, MonitorPropHelper.GetName(MonitorProp.CalcuO1));
-                        dict.Add(MonitorProp.CalcuO2, MonitorPropHelper.GetName(MonitorProp.CalcuO2));
-                        dict.Add(MonitorProp.CalcuT1, MonitorPropHelper.GetName(MonitorProp.CalcuT1));
-                        dict.Add(MonitorProp.CalcuT2, MonitorPropHelper.GetName(MonitorProp.CalcuT2));
-                        dict.Add(MonitorProp.CalcuTd, MonitorPropHelper.GetName(MonitorProp.CalcuTd));
-                    }
-                    break;
-                default: break;
-            }
-            return dict;
-        }
-
-        /// <summary>
         /// 鑾峰彇鍚嶇О
         /// </summary>
         public static string GetName(string code)
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/00-core/HydroMonitorValueExtensions.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/00-core/HydroMonitorValueExtensions.cs
index f9bd936..2b3a291 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/00-core/HydroMonitorValueExtensions.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/00-core/HydroMonitorValueExtensions.cs
@@ -9,9 +9,9 @@
         /// <summary>
         /// 鏇存柊鐩戞祴鍊煎垪琛�
         /// </summary>
-        public static void UpdateMonitorValue(this List<HydroMonitorValueViewModel> allMonitorValueList, string monitorInfo)
+        public static void UpdateMonitorValue(this List<HydroMonitorValueViewModel> all, string monitorInfo)
         {
-            if (allMonitorValueList == null || allMonitorValueList.Count < 1)
+            if (all == null || all.Count < 1)
             {
                 return;
             }
@@ -20,19 +20,19 @@
                 return;
             }
             var allWorkingMonitorList = JsonHelper.Json2Object<List<HydroWorkingMonitorViewModel>>(monitorInfo);
-            if (allWorkingMonitorList == null || allWorkingMonitorList.Count < 1)
-            {
-                return;
-            }
-            allMonitorValueList.UpdateMonitorValue(allWorkingMonitorList);
+            all.UpdateMonitorValue(allWorkingMonitorList);
         }
 
         /// <summary>
         /// 鏇存柊鐩戞祴鍊煎垪琛�
         /// </summary>
-        public static void UpdateMonitorValue(this List<HydroMonitorValueViewModel> allMonitorValueList, List<HydroWorkingMonitorViewModel> allWorkingMonitorList)
+        public static void UpdateMonitorValue
+            (
+                this List<HydroMonitorValueViewModel> all,
+                List<HydroWorkingMonitorViewModel> allWorkingMonitorList
+            )
         {
-            if (allMonitorValueList == null || allMonitorValueList.Count < 1)
+            if (all == null || all.Count < 1)
             {
                 return;
             }
@@ -40,12 +40,12 @@
             {
                 return;
             }
-            foreach (var monitorValue in allMonitorValueList)
+            foreach (var monitorValue in all)
             {
                 var workingMonitor = allWorkingMonitorList.Find(x => x.Relation == monitorValue.Vmo.Relation && x.PropName == monitorValue.Vmo.PropName);
                 if (workingMonitor != null)
                 {
-                    monitorValue.PropValue = workingMonitor.PropValue;
+                    monitorValue.UpdatePropValue(workingMonitor.PropValue);
                 }
             }
         }
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/01-set/SetHydroMonitorListCtrl.Designer.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/01-set/SetHydroMonitorListCtrl.Designer.cs
deleted file mode 100644
index d4d172c..0000000
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/01-set/SetHydroMonitorListCtrl.Designer.cs
+++ /dev/null
@@ -1,153 +0,0 @@
-锘縩amespace Yw.WinFrmUI
-{
-    partial class SetHydroMonitorListCtrl
-    {
-        /// <summary> 
-        /// Required designer variable.
-        /// </summary>
-        private System.ComponentModel.IContainer components = null;
-
-        /// <summary> 
-        /// Clean up any resources being used.
-        /// </summary>
-        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
-        protected override void Dispose(bool disposing)
-        {
-            if (disposing && (components != null))
-            {
-                components.Dispose();
-            }
-            base.Dispose(disposing);
-        }
-
-        #region Component Designer generated code
-
-        /// <summary> 
-        /// Required method for Designer support - do not modify 
-        /// the contents of this method with the code editor.
-        /// </summary>
-        private void InitializeComponent()
-        {
-            components = new Container();
-            gridControl1 = new DevExpress.XtraGrid.GridControl();
-            setHydroMonitorViewModelBindingSource = new BindingSource(components);
-            gridView1 = new DevExpress.XtraGrid.Views.Grid.GridView();
-            colChecked = new DevExpress.XtraGrid.Columns.GridColumn();
-            colRelation = new DevExpress.XtraGrid.Columns.GridColumn();
-            colPropName = new DevExpress.XtraGrid.Columns.GridColumn();
-            colFlags = new DevExpress.XtraGrid.Columns.GridColumn();
-            repositoryItemCheckedComboBoxEdit1 = new DevExpress.XtraEditors.Repository.RepositoryItemCheckedComboBoxEdit();
-            colDescription = new DevExpress.XtraGrid.Columns.GridColumn();
-            ((ISupportInitialize)gridControl1).BeginInit();
-            ((ISupportInitialize)setHydroMonitorViewModelBindingSource).BeginInit();
-            ((ISupportInitialize)gridView1).BeginInit();
-            ((ISupportInitialize)repositoryItemCheckedComboBoxEdit1).BeginInit();
-            SuspendLayout();
-            // 
-            // gridControl1
-            // 
-            gridControl1.DataSource = setHydroMonitorViewModelBindingSource;
-            gridControl1.Dock = DockStyle.Fill;
-            gridControl1.Location = new Point(0, 0);
-            gridControl1.MainView = gridView1;
-            gridControl1.Name = "gridControl1";
-            gridControl1.RepositoryItems.AddRange(new DevExpress.XtraEditors.Repository.RepositoryItem[] { repositoryItemCheckedComboBoxEdit1 });
-            gridControl1.Size = new Size(683, 307);
-            gridControl1.TabIndex = 0;
-            gridControl1.ViewCollection.AddRange(new DevExpress.XtraGrid.Views.Base.BaseView[] { gridView1 });
-            // 
-            // setHydroMonitorViewModelBindingSource
-            // 
-            setHydroMonitorViewModelBindingSource.DataSource = typeof(SetHydroMonitorViewModel);
-            // 
-            // gridView1
-            // 
-            gridView1.Columns.AddRange(new DevExpress.XtraGrid.Columns.GridColumn[] { colChecked, colRelation, colPropName, colFlags, colDescription });
-            gridView1.GridControl = gridControl1;
-            gridView1.Name = "gridView1";
-            // 
-            // colChecked
-            // 
-            colChecked.FieldName = "Checked";
-            colChecked.MaxWidth = 60;
-            colChecked.MinWidth = 60;
-            colChecked.Name = "colChecked";
-            colChecked.Visible = true;
-            colChecked.VisibleIndex = 0;
-            colChecked.Width = 60;
-            // 
-            // colRelation
-            // 
-            colRelation.FieldName = "Relation";
-            colRelation.MaxWidth = 150;
-            colRelation.MinWidth = 100;
-            colRelation.Name = "colRelation";
-            colRelation.Visible = true;
-            colRelation.VisibleIndex = 1;
-            colRelation.Width = 100;
-            // 
-            // colPropName
-            // 
-            colPropName.FieldName = "PropName";
-            colPropName.MaxWidth = 100;
-            colPropName.MinWidth = 100;
-            colPropName.Name = "colPropName";
-            colPropName.Visible = true;
-            colPropName.VisibleIndex = 2;
-            colPropName.Width = 100;
-            // 
-            // colFlags
-            // 
-            colFlags.ColumnEdit = repositoryItemCheckedComboBoxEdit1;
-            colFlags.FieldName = "Flags";
-            colFlags.MaxWidth = 200;
-            colFlags.MinWidth = 100;
-            colFlags.Name = "colFlags";
-            colFlags.Visible = true;
-            colFlags.VisibleIndex = 3;
-            colFlags.Width = 100;
-            // 
-            // repositoryItemCheckedComboBoxEdit1
-            // 
-            repositoryItemCheckedComboBoxEdit1.AllowMultiSelect = true;
-            repositoryItemCheckedComboBoxEdit1.AutoHeight = false;
-            repositoryItemCheckedComboBoxEdit1.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] { new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Combo) });
-            repositoryItemCheckedComboBoxEdit1.Name = "repositoryItemCheckedComboBoxEdit1";
-            repositoryItemCheckedComboBoxEdit1.SelectAllItemCaption = "鍏ㄩ��";
-            // 
-            // colDescription
-            // 
-            colDescription.FieldName = "Description";
-            colDescription.MinWidth = 100;
-            colDescription.Name = "colDescription";
-            colDescription.Visible = true;
-            colDescription.VisibleIndex = 4;
-            colDescription.Width = 100;
-            // 
-            // SetHydroMonitorListCtrl
-            // 
-            AutoScaleDimensions = new SizeF(7F, 14F);
-            AutoScaleMode = AutoScaleMode.Font;
-            Controls.Add(gridControl1);
-            Name = "SetHydroMonitorListCtrl";
-            Size = new Size(683, 307);
-            ((ISupportInitialize)gridControl1).EndInit();
-            ((ISupportInitialize)setHydroMonitorViewModelBindingSource).EndInit();
-            ((ISupportInitialize)gridView1).EndInit();
-            ((ISupportInitialize)repositoryItemCheckedComboBoxEdit1).EndInit();
-            ResumeLayout(false);
-        }
-
-        #endregion
-
-        private DevExpress.XtraGrid.GridControl gridControl1;
-        private DevExpress.XtraGrid.Views.Grid.GridView gridView1;
-        private DevExpress.XtraGrid.Columns.GridColumn colChecked;
-        private DevExpress.XtraGrid.Columns.GridColumn colRelation;
-        private DevExpress.XtraGrid.Columns.GridColumn colPropName;
-        private DevExpress.XtraGrid.Columns.GridColumn colDescription;
-        private BindingSource setHydroMonitorViewModelBindingSource;
-        private DevExpress.XtraGrid.Columns.GridColumn colFlags;
-        private DevExpress.XtraEditors.Repository.RepositoryItemCheckedComboBoxEdit repositoryItemCheckedComboBoxEdit1;
-    }
-}
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/01-set/SetHydroMonitorListCtrl.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/01-set/SetHydroMonitorListCtrl.cs
deleted file mode 100644
index d2cc00a..0000000
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/01-set/SetHydroMonitorListCtrl.cs
+++ /dev/null
@@ -1,102 +0,0 @@
-锘縩amespace Yw.WinFrmUI
-{
-    public partial class SetHydroMonitorListCtrl : DevExpress.XtraEditors.XtraUserControl
-    {
-        public SetHydroMonitorListCtrl()
-        {
-            InitializeComponent();
-            this.gridView1.SetNormalEditView(30);
-            this.colRelation.OptionsColumn.AllowEdit = false;
-            this.colPropName.OptionsColumn.AllowEdit = false;
-            this.Load += SetHydroMonitorListCtrl_Load;
-
-        }
-
-        private void SetHydroMonitorListCtrl_Load(object sender, EventArgs e)
-        {
-            InitialFlags();
-        }
-
-        private Yw.Model.HydroModelInfo _hydroInfo = null;//姘村姏淇℃伅
-        private Yw.Model.HydroVisualInfo _visualInfo = null;//鏋勪欢淇℃伅
-        private BindingList<SetHydroMonitorViewModel> _allBindingList = null;//鎵�鏈夌粦瀹氬垪琛�
-
-        /// <summary>
-        /// 缁戝畾鏁版嵁
-        /// </summary>
-        public void SetBindingData
-            (
-                Yw.Model.HydroModelInfo hydroInfo,
-                Yw.Model.HydroVisualInfo visualInfo,
-                List<HydroMonitorVmo> allMonitorList
-            )
-        {
-            _hydroInfo = hydroInfo;
-            _visualInfo = visualInfo;
-            _allBindingList = new BindingList<SetHydroMonitorViewModel>();
-            if (hydroInfo != null)
-            {
-                if (visualInfo != null)
-                {
-                    var propList = HydroMonitorPropHelper.GetNameDict(visualInfo.Catalog);
-                    if (propList != null && propList.Count > 0)
-                    {
-                        var sortCode = allMonitorList == null || allMonitorList.Count < 1 ? 0 : allMonitorList.Max(x => x.SortCode);
-                        foreach (var prop in propList)
-                        {
-                            var vmo = allMonitorList?.Find(x => x.ModelID == hydroInfo.ID && x.Relation == visualInfo.Code && x.PropName == prop.Key);
-                            if (vmo == null)
-                            {
-                                sortCode++;
-                                vmo = new HydroMonitorVmo()
-                                {
-                                    ID = 0,
-                                    ModelID = hydroInfo.ID,
-                                    Relation = visualInfo.Code,
-                                    PropName = prop.Key,
-                                    SortCode = sortCode,
-                                    Description = string.Empty
-                                };
-                            }
-                            var vm = new SetHydroMonitorViewModel(vmo, visualInfo, prop.Value);
-                            _allBindingList.Add(vm);
-                        }
-                    }
-                }
-            }
-            this.setHydroMonitorViewModelBindingSource.DataSource = _allBindingList;
-            this.setHydroMonitorViewModelBindingSource.ResetBindings(false);
-        }
-
-        private async void InitialFlags()
-        {
-            var flags = await BLLFactory<Yw.BLL.SysFlag>.Instance.GetBySysType(Yw.Hydro.DataType.HydroMonitor);
-            this.repositoryItemCheckedComboBoxEdit1.Items.BeginUpdate();
-            this.repositoryItemCheckedComboBoxEdit1.Items.Clear();
-            if (flags != null && flags.Count > 0)
-            {
-                foreach (var flag in flags)
-                {
-                    this.repositoryItemCheckedComboBoxEdit1.Items.Add(flag.Name);
-                }
-            }
-            this.repositoryItemCheckedComboBoxEdit1.Items.EndUpdate();
-        }
-
-        /// <summary>
-        /// 鑾峰彇鐩戞祴鍒楄〃
-        /// </summary>
-        public List<HydroMonitorVmo> GetMonitorList()
-        {
-            var list = _allBindingList?.Where(x => x.Checked).ToList();
-            list?.ForEach(x =>
-            {
-                x.Vmo.Flags = HydroFlagsHelper.ToList(x.Flags);
-                x.Vmo.Description = x.Description;
-            });
-            return list?.Select(x => x.Vmo).ToList();
-        }
-
-
-    }
-}
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/01-set/SetHydroMonitorListCtrl.resx b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/01-set/SetHydroMonitorListCtrl.resx
deleted file mode 100644
index e459b6c..0000000
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/01-set/SetHydroMonitorListCtrl.resx
+++ /dev/null
@@ -1,123 +0,0 @@
-锘�<?xml version="1.0" encoding="utf-8"?>
-<root>
-  <!--
-    Microsoft ResX Schema 
-
-    Version 2.0
-
-    The primary goals of this format is to allow a simple XML format
-    that is mostly human readable. The generation and parsing of the
-    various data types are done through the TypeConverter classes
-    associated with the data types.
-
-    Example:
-
-    ... ado.net/XML headers & schema ...
-    <resheader name="resmimetype">text/microsoft-resx</resheader>
-    <resheader name="version">2.0</resheader>
-    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
-    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
-    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
-    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
-    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
-        <value>[base64 mime encoded serialized .NET Framework object]</value>
-    </data>
-    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
-        <comment>This is a comment</comment>
-    </data>
-
-    There are any number of "resheader" rows that contain simple
-    name/value pairs.
-
-    Each data row contains a name, and value. The row also contains a
-    type or mimetype. Type corresponds to a .NET class that support
-    text/value conversion through the TypeConverter architecture.
-    Classes that don't support this are serialized and stored with the
-    mimetype set.
-
-    The mimetype is used for serialized objects, and tells the
-    ResXResourceReader how to depersist the object. This is currently not
-    extensible. For a given mimetype the value must be set accordingly:
-
-    Note - application/x-microsoft.net.object.binary.base64 is the format
-    that the ResXResourceWriter will generate, however the reader can
-    read any of the formats listed below.
-
-    mimetype: application/x-microsoft.net.object.binary.base64
-    value   : The object must be serialized with
-            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
-            : and then encoded with base64 encoding.
-    
-    mimetype: application/x-microsoft.net.object.soap.base64
-    value   : The object must be serialized with
-            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
-            : and then encoded with base64 encoding.
-
-    mimetype: application/x-microsoft.net.object.bytearray.base64
-    value   : The object must be serialized into a byte array
-            : using a System.ComponentModel.TypeConverter
-            : and then encoded with base64 encoding.
-    -->
-  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
-    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
-    <xsd:element name="root" msdata:IsDataSet="true">
-      <xsd:complexType>
-        <xsd:choice maxOccurs="unbounded">
-          <xsd:element name="metadata">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" />
-              </xsd:sequence>
-              <xsd:attribute name="name" use="required" type="xsd:string" />
-              <xsd:attribute name="type" type="xsd:string" />
-              <xsd:attribute name="mimetype" type="xsd:string" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="assembly">
-            <xsd:complexType>
-              <xsd:attribute name="alias" type="xsd:string" />
-              <xsd:attribute name="name" type="xsd:string" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="data">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
-              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
-              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="resheader">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" />
-            </xsd:complexType>
-          </xsd:element>
-        </xsd:choice>
-      </xsd:complexType>
-    </xsd:element>
-  </xsd:schema>
-  <resheader name="resmimetype">
-    <value>text/microsoft-resx</value>
-  </resheader>
-  <resheader name="version">
-    <value>2.0</value>
-  </resheader>
-  <resheader name="reader">
-    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <resheader name="writer">
-    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <metadata name="setHydroMonitorViewModelBindingSource.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
-    <value>17, 17</value>
-  </metadata>
-</root>
\ No newline at end of file
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/01-set/SetHydroMonitorListDlg.Designer.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/01-set/SetHydroMonitorListDlg.Designer.cs
deleted file mode 100644
index 25a0c55..0000000
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/01-set/SetHydroMonitorListDlg.Designer.cs
+++ /dev/null
@@ -1,165 +0,0 @@
-锘縩amespace Yw.WinFrmUI
-{
-    partial class SetHydroMonitorListDlg
-    {
-        /// <summary>
-        /// Required designer variable.
-        /// </summary>
-        private System.ComponentModel.IContainer components = null;
-
-        /// <summary>
-        /// Clean up any resources being used.
-        /// </summary>
-        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
-        protected override void Dispose(bool disposing)
-        {
-            if (disposing && (components != null))
-            {
-                components.Dispose();
-            }
-            base.Dispose(disposing);
-        }
-
-        #region Windows Form Designer generated code
-
-        /// <summary>
-        /// Required method for Designer support - do not modify
-        /// the contents of this method with the code editor.
-        /// </summary>
-        private void InitializeComponent()
-        {
-            ribbon = new DevExpress.XtraBars.Ribbon.RibbonControl();
-            ribbonPage1 = new DevExpress.XtraBars.Ribbon.RibbonPage();
-            ribbonPageGroup1 = new DevExpress.XtraBars.Ribbon.RibbonPageGroup();
-            layoutControl1 = new DevExpress.XtraLayout.LayoutControl();
-            generalOkAndCancelCtrl1 = new GeneralOkAndCancelCtrl();
-            setHydroMonitorListCtrl1 = new SetHydroMonitorListCtrl();
-            Root = new DevExpress.XtraLayout.LayoutControlGroup();
-            layoutControlItem1 = new DevExpress.XtraLayout.LayoutControlItem();
-            layoutControlItem2 = new DevExpress.XtraLayout.LayoutControlItem();
-            ((ISupportInitialize)ribbon).BeginInit();
-            ((ISupportInitialize)layoutControl1).BeginInit();
-            layoutControl1.SuspendLayout();
-            ((ISupportInitialize)Root).BeginInit();
-            ((ISupportInitialize)layoutControlItem1).BeginInit();
-            ((ISupportInitialize)layoutControlItem2).BeginInit();
-            SuspendLayout();
-            // 
-            // ribbon
-            // 
-            ribbon.ExpandCollapseItem.Id = 0;
-            ribbon.Items.AddRange(new DevExpress.XtraBars.BarItem[] { ribbon.ExpandCollapseItem });
-            ribbon.Location = new Point(0, 0);
-            ribbon.MaxItemId = 1;
-            ribbon.Name = "ribbon";
-            ribbon.Pages.AddRange(new DevExpress.XtraBars.Ribbon.RibbonPage[] { ribbonPage1 });
-            ribbon.RibbonCaptionAlignment = DevExpress.XtraBars.Ribbon.RibbonCaptionAlignment.Left;
-            ribbon.ShowDisplayOptionsMenuButton = DevExpress.Utils.DefaultBoolean.False;
-            ribbon.Size = new Size(591, 32);
-            // 
-            // ribbonPage1
-            // 
-            ribbonPage1.Groups.AddRange(new DevExpress.XtraBars.Ribbon.RibbonPageGroup[] { ribbonPageGroup1 });
-            ribbonPage1.Name = "ribbonPage1";
-            ribbonPage1.Text = "ribbonPage1";
-            // 
-            // ribbonPageGroup1
-            // 
-            ribbonPageGroup1.Name = "ribbonPageGroup1";
-            ribbonPageGroup1.Text = "ribbonPageGroup1";
-            // 
-            // layoutControl1
-            // 
-            layoutControl1.Controls.Add(generalOkAndCancelCtrl1);
-            layoutControl1.Controls.Add(setHydroMonitorListCtrl1);
-            layoutControl1.Dock = DockStyle.Fill;
-            layoutControl1.Location = new Point(0, 32);
-            layoutControl1.Name = "layoutControl1";
-            layoutControl1.OptionsCustomizationForm.DesignTimeCustomizationFormPositionAndSize = new Rectangle(976, 355, 650, 400);
-            layoutControl1.Root = Root;
-            layoutControl1.Size = new Size(591, 214);
-            layoutControl1.TabIndex = 2;
-            layoutControl1.Text = "layoutControl1";
-            // 
-            // generalOkAndCancelCtrl1
-            // 
-            generalOkAndCancelCtrl1.ButtonCancelMaxSize = new Size(100, 26);
-            generalOkAndCancelCtrl1.ButtonCancelMinSize = new Size(100, 26);
-            generalOkAndCancelCtrl1.ButtonOkMaxSize = new Size(100, 26);
-            generalOkAndCancelCtrl1.ButtonOkMinSize = new Size(100, 26);
-            generalOkAndCancelCtrl1.Location = new Point(2, 186);
-            generalOkAndCancelCtrl1.Name = "generalOkAndCancelCtrl1";
-            generalOkAndCancelCtrl1.Size = new Size(587, 26);
-            generalOkAndCancelCtrl1.TabIndex = 8;
-            // 
-            // setHydroMonitorListCtrl1
-            // 
-            setHydroMonitorListCtrl1.Location = new Point(2, 2);
-            setHydroMonitorListCtrl1.Name = "setHydroMonitorListCtrl1";
-            setHydroMonitorListCtrl1.Size = new Size(587, 180);
-            setHydroMonitorListCtrl1.TabIndex = 7;
-            // 
-            // Root
-            // 
-            Root.EnableIndentsWithoutBorders = DevExpress.Utils.DefaultBoolean.True;
-            Root.GroupBordersVisible = false;
-            Root.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] { layoutControlItem1, layoutControlItem2 });
-            Root.Name = "Root";
-            Root.Padding = new DevExpress.XtraLayout.Utils.Padding(0, 0, 0, 0);
-            Root.Size = new Size(591, 214);
-            Root.TextVisible = false;
-            // 
-            // layoutControlItem1
-            // 
-            layoutControlItem1.Control = setHydroMonitorListCtrl1;
-            layoutControlItem1.Location = new Point(0, 0);
-            layoutControlItem1.Name = "layoutControlItem1";
-            layoutControlItem1.Size = new Size(591, 184);
-            layoutControlItem1.TextSize = new Size(0, 0);
-            layoutControlItem1.TextVisible = false;
-            // 
-            // layoutControlItem2
-            // 
-            layoutControlItem2.Control = generalOkAndCancelCtrl1;
-            layoutControlItem2.Location = new Point(0, 184);
-            layoutControlItem2.Name = "layoutControlItem2";
-            layoutControlItem2.Size = new Size(591, 30);
-            layoutControlItem2.TextSize = new Size(0, 0);
-            layoutControlItem2.TextVisible = false;
-            // 
-            // SetHydroMonitorListDlg
-            // 
-            AutoScaleDimensions = new SizeF(7F, 14F);
-            AutoScaleMode = AutoScaleMode.Font;
-            ClientSize = new Size(591, 246);
-            Controls.Add(layoutControl1);
-            Controls.Add(ribbon);
-            FormBorderStyle = FormBorderStyle.SizableToolWindow;
-            Name = "SetHydroMonitorListDlg";
-            Ribbon = ribbon;
-            RibbonVisibility = DevExpress.XtraBars.Ribbon.RibbonVisibility.Hidden;
-            StartPosition = FormStartPosition.CenterParent;
-            Text = "鐩戞祴鐐�";
-            ((ISupportInitialize)ribbon).EndInit();
-            ((ISupportInitialize)layoutControl1).EndInit();
-            layoutControl1.ResumeLayout(false);
-            ((ISupportInitialize)Root).EndInit();
-            ((ISupportInitialize)layoutControlItem1).EndInit();
-            ((ISupportInitialize)layoutControlItem2).EndInit();
-            ResumeLayout(false);
-            PerformLayout();
-        }
-
-        #endregion
-
-        private DevExpress.XtraBars.Ribbon.RibbonControl ribbon;
-        private DevExpress.XtraBars.Ribbon.RibbonPage ribbonPage1;
-        private DevExpress.XtraBars.Ribbon.RibbonPageGroup ribbonPageGroup1;
-        private DevExpress.XtraLayout.LayoutControl layoutControl1;
-        private DevExpress.XtraLayout.LayoutControlGroup Root;
-        private SetHydroMonitorListCtrl setHydroMonitorListCtrl1;
-        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem1;
-        private GeneralOkAndCancelCtrl generalOkAndCancelCtrl1;
-        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem2;
-    }
-}
\ No newline at end of file
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/01-set/SetHydroMonitorListDlg.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/01-set/SetHydroMonitorListDlg.cs
deleted file mode 100644
index cbab6dd..0000000
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/01-set/SetHydroMonitorListDlg.cs
+++ /dev/null
@@ -1,57 +0,0 @@
-锘縩amespace Yw.WinFrmUI
-{
-    public partial class SetHydroMonitorListDlg : DevExpress.XtraBars.Ribbon.RibbonForm
-    {
-        public SetHydroMonitorListDlg()
-        {
-            InitializeComponent();
-            this.IconOptions.Icon = Yw.WinFrmUI.GlobalParas.AppIcon;
-            this.layoutControl1.SetupLayoutControl();
-            this.generalOkAndCancelCtrl1.OkEvent += GeneralOkAndCancelCtrl1_OkEvent;
-        }
-
-        /// <summary>
-        /// 閲嶈浇鏁版嵁浜嬩欢
-        /// </summary>
-        public event Action<List<HydroMonitorVmo>> ReloadDataEvent;
-
-        //姘村姏淇℃伅
-        private Yw.Model.HydroModelInfo _hydroInfo = null;
-        //鏋勪欢淇℃伅
-        private Yw.Model.HydroVisualInfo _visualInfo = null;
-
-        /// <summary>
-        /// 缁戝畾鏁版嵁
-        /// </summary>
-        public void SetBindingData
-            (
-                Yw.Model.HydroModelInfo hydroInfo,
-                Yw.Model.HydroVisualInfo visualInfo,
-                List<HydroMonitorVmo> allMonitorList
-            )
-        {
-            _hydroInfo = hydroInfo;
-            _visualInfo = visualInfo;
-            this.setHydroMonitorListCtrl1.SetBindingData(hydroInfo, visualInfo, allMonitorList);
-        }
-
-        //纭畾
-        private void GeneralOkAndCancelCtrl1_OkEvent()
-        {
-            if (_hydroInfo == null)
-            {
-                return;
-            }
-            if (_visualInfo == null)
-            {
-                return;
-            }
-            var monitorList = this.setHydroMonitorListCtrl1.GetMonitorList();
-            this.ReloadDataEvent?.Invoke(monitorList);
-            this.DialogResult = DialogResult.OK;
-            this.Close();
-        }
-
-
-    }
-}
\ No newline at end of file
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/01-set/SetHydroMonitorListDlg.resx b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/01-set/SetHydroMonitorListDlg.resx
deleted file mode 100644
index af32865..0000000
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/01-set/SetHydroMonitorListDlg.resx
+++ /dev/null
@@ -1,120 +0,0 @@
-锘�<?xml version="1.0" encoding="utf-8"?>
-<root>
-  <!--
-    Microsoft ResX Schema 
-
-    Version 2.0
-
-    The primary goals of this format is to allow a simple XML format
-    that is mostly human readable. The generation and parsing of the
-    various data types are done through the TypeConverter classes
-    associated with the data types.
-
-    Example:
-
-    ... ado.net/XML headers & schema ...
-    <resheader name="resmimetype">text/microsoft-resx</resheader>
-    <resheader name="version">2.0</resheader>
-    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
-    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
-    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
-    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
-    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
-        <value>[base64 mime encoded serialized .NET Framework object]</value>
-    </data>
-    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
-        <comment>This is a comment</comment>
-    </data>
-
-    There are any number of "resheader" rows that contain simple
-    name/value pairs.
-
-    Each data row contains a name, and value. The row also contains a
-    type or mimetype. Type corresponds to a .NET class that support
-    text/value conversion through the TypeConverter architecture.
-    Classes that don't support this are serialized and stored with the
-    mimetype set.
-
-    The mimetype is used for serialized objects, and tells the
-    ResXResourceReader how to depersist the object. This is currently not
-    extensible. For a given mimetype the value must be set accordingly:
-
-    Note - application/x-microsoft.net.object.binary.base64 is the format
-    that the ResXResourceWriter will generate, however the reader can
-    read any of the formats listed below.
-
-    mimetype: application/x-microsoft.net.object.binary.base64
-    value   : The object must be serialized with
-            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
-            : and then encoded with base64 encoding.
-    
-    mimetype: application/x-microsoft.net.object.soap.base64
-    value   : The object must be serialized with
-            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
-            : and then encoded with base64 encoding.
-
-    mimetype: application/x-microsoft.net.object.bytearray.base64
-    value   : The object must be serialized into a byte array
-            : using a System.ComponentModel.TypeConverter
-            : and then encoded with base64 encoding.
-    -->
-  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
-    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
-    <xsd:element name="root" msdata:IsDataSet="true">
-      <xsd:complexType>
-        <xsd:choice maxOccurs="unbounded">
-          <xsd:element name="metadata">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" />
-              </xsd:sequence>
-              <xsd:attribute name="name" use="required" type="xsd:string" />
-              <xsd:attribute name="type" type="xsd:string" />
-              <xsd:attribute name="mimetype" type="xsd:string" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="assembly">
-            <xsd:complexType>
-              <xsd:attribute name="alias" type="xsd:string" />
-              <xsd:attribute name="name" type="xsd:string" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="data">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
-              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
-              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="resheader">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" />
-            </xsd:complexType>
-          </xsd:element>
-        </xsd:choice>
-      </xsd:complexType>
-    </xsd:element>
-  </xsd:schema>
-  <resheader name="resmimetype">
-    <value>text/microsoft-resx</value>
-  </resheader>
-  <resheader name="version">
-    <value>2.0</value>
-  </resheader>
-  <resheader name="reader">
-    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <resheader name="writer">
-    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-</root>
\ No newline at end of file
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/01-set/SetHydroMonitorViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/01-set/SetHydroMonitorViewModel.cs
deleted file mode 100644
index 64a3023..0000000
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/01-set/SetHydroMonitorViewModel.cs
+++ /dev/null
@@ -1,63 +0,0 @@
-锘縩amespace Yw.WinFrmUI
-{
-    /// <summary>
-    /// 
-    /// </summary>
-    public class SetHydroMonitorViewModel
-    {
-        /// <summary>
-        /// 
-        /// </summary>
-        public SetHydroMonitorViewModel() { }
-
-        /// <summary>
-        /// 
-        /// </summary>
-        public SetHydroMonitorViewModel(Yw.Vmo.HydroMonitorVmo vmo, Yw.Model.HydroVisualInfo visual, string propName)
-        {
-            this.Checked = vmo.ID > 0;
-            this.Relation = visual.Name;
-            this.PropName = propName;
-            this.Flags = Yw.Untity.FlagsHelper.ToString(vmo.Flags);
-            this.Description = vmo.Description;
-            this.Vmo = vmo;
-        }
-
-        /// <summary>
-        /// 閫夋嫨
-        /// </summary>
-        [DisplayName("閫夋嫨")]
-        public bool Checked { get; set; }
-
-        /// <summary>
-        /// 鏋勪欢
-        /// </summary>
-        [DisplayName("鏋勪欢")]
-        public string Relation { get; set; }
-
-        /// <summary>
-        /// 灞炴��
-        /// </summary>
-        [DisplayName("灞炴��")]
-        public string PropName { get; set; }
-
-        /// <summary>
-        /// 鏍囩
-        /// </summary>
-        [DisplayName("鏍囩")]
-        public string Flags { get; set; }
-
-        /// <summary>
-        /// 璇存槑
-        /// </summary>	
-        [DisplayName("璇存槑")]
-        public string Description { get; set; }
-
-        /// <summary>
-        /// vmo
-        /// </summary>
-        public Yw.Vmo.HydroMonitorVmo Vmo { get; set; }
-
-
-    }
-}
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/02-value/HydroMonitorValueListCtrl.Designer.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/01-value/HydroMonitorValueListCtrl.Designer.cs
similarity index 100%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/02-value/HydroMonitorValueListCtrl.Designer.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/01-value/HydroMonitorValueListCtrl.Designer.cs
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/02-value/HydroMonitorValueListCtrl.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/01-value/HydroMonitorValueListCtrl.cs
similarity index 100%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/02-value/HydroMonitorValueListCtrl.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/01-value/HydroMonitorValueListCtrl.cs
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/02-value/HydroMonitorValueListCtrl.resx b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/01-value/HydroMonitorValueListCtrl.resx
similarity index 100%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/02-value/HydroMonitorValueListCtrl.resx
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/01-value/HydroMonitorValueListCtrl.resx
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/01-value/HydroMonitorValueViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/01-value/HydroMonitorValueViewModel.cs
new file mode 100644
index 0000000..9bf2d6a
--- /dev/null
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/01-value/HydroMonitorValueViewModel.cs
@@ -0,0 +1,146 @@
+锘縩amespace Yw.WinFrmUI
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public class HydroMonitorValueViewModel
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        public HydroMonitorValueViewModel() { }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public HydroMonitorValueViewModel
+            (
+                Yw.Vmo.HydroMonitorVmo vmo,
+                Yw.Model.HydroVisualInfo visual,
+                double? propValue
+            )
+        {
+            this.Relation = visual.Name;
+            this.PropName = HydroMonitorPropHelper.GetName(vmo.PropName);
+            this.UnitName = HydroMonitorPropHelper.GetUnit(vmo.PropName);
+            this.Flags = Yw.Untity.FlagsHelper.ToString(vmo.Flags);
+            this.SortCode = vmo.SortCode;
+            this.Description = vmo.Description;
+            this.Vmo = vmo;
+
+            if (propValue.HasValue)
+            {
+                UpdatePropValue(propValue.Value);
+            }
+        }
+
+
+        /// <summary>
+        /// 鏋勪欢
+        /// </summary>
+        [DisplayName("鏋勪欢")]
+        public string Relation { get; set; }
+
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        [DisplayName("鍚嶇О")]
+        public string PropName { get; set; }
+
+        /// <summary>
+        /// 鐩戞祴鍊�
+        /// </summary>
+        [DisplayName("鐩戞祴鍊�")]
+        public double? PropValue { get; set; }
+
+        /// <summary>
+        /// 鍗曚綅
+        /// </summary>
+        [DisplayName("鍗曚綅")]
+        public string UnitName { get; set; }
+
+        /// <summary>
+        /// 鏍囩
+        /// </summary>
+        [DisplayName("鏍囩")]
+        public string Flags { get; set; }
+
+        /// <summary>
+        /// 鎺掑簭鐮�
+        /// </summary>
+        public int SortCode { get; set; }
+
+        /// <summary>
+        /// 璇存槑
+        /// </summary>	
+        [DisplayName("璇存槑")]
+        public string Description { get; set; }
+
+        /// <summary>
+        /// vmo
+        /// </summary>
+        public Yw.Vmo.HydroMonitorVmo Vmo { get; set; }
+
+
+        /// <summary>
+        /// 鏇存柊灞炴�у��
+        /// </summary>
+        public void UpdatePropValue(double propValue)
+        {
+            switch (this.Vmo.PropName)
+            {
+                case Yw.Hydro.MonitorProp.CalcuQ:
+                    {
+                        this.PropValue = Math.Round(propValue, 1);
+                    }
+                    break;
+                case Yw.Hydro.MonitorProp.CalcuP:
+                    {
+                        this.PropValue = Math.Round(propValue, 1);
+                    }
+                    break;
+                case Yw.Hydro.MonitorProp.CalcuE:
+                    {
+                        this.PropValue = Math.Round(propValue, 1);
+                    }
+                    break;
+                case Yw.Hydro.MonitorProp.CalcuPr:
+                    {
+                        this.PropValue = Math.Round(propValue, 2);
+                    }
+                    break;
+                case Yw.Hydro.MonitorProp.CalcuO:
+                    {
+                        this.PropValue = Math.Round(propValue, 0);
+                    }
+                    break;
+                case Yw.Hydro.MonitorProp.CalcuO1:
+                    {
+                        this.PropValue = Math.Round(propValue, 0);
+                    }
+                    break;
+                case Yw.Hydro.MonitorProp.CalcuO2:
+                    {
+                        this.PropValue = Math.Round(propValue, 0);
+                    }
+                    break;
+                default: this.PropValue = Math.Round(propValue, 2); break;
+            }
+        }
+
+        /// <summary>
+        /// 鏇存柊灞炴�у��
+        /// </summary>
+        public void UpdatePropValue(double? propValue)
+        {
+            this.PropValue = propValue;
+            if (propValue.HasValue)
+            {
+                UpdatePropValue(propValue.Value);
+            }
+        }
+
+
+
+    }
+}
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/04-docking/HydroMonitorDockingViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/02-docking/HydroMonitorDockingViewModel.cs
similarity index 100%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/04-docking/HydroMonitorDockingViewModel.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/02-docking/HydroMonitorDockingViewModel.cs
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/04-docking/SetHydroMonitorDockingListCtrl.Designer.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/02-docking/SetHydroMonitorDockingListCtrl.Designer.cs
similarity index 100%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/04-docking/SetHydroMonitorDockingListCtrl.Designer.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/02-docking/SetHydroMonitorDockingListCtrl.Designer.cs
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/04-docking/SetHydroMonitorDockingListCtrl.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/02-docking/SetHydroMonitorDockingListCtrl.cs
similarity index 100%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/04-docking/SetHydroMonitorDockingListCtrl.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/02-docking/SetHydroMonitorDockingListCtrl.cs
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/04-docking/SetHydroMonitorDockingListCtrl.resx b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/02-docking/SetHydroMonitorDockingListCtrl.resx
similarity index 100%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/04-docking/SetHydroMonitorDockingListCtrl.resx
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/02-docking/SetHydroMonitorDockingListCtrl.resx
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/04-docking/SetHydroMonitorDockingListDlg.Designer.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/02-docking/SetHydroMonitorDockingListDlg.Designer.cs
similarity index 99%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/04-docking/SetHydroMonitorDockingListDlg.Designer.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/02-docking/SetHydroMonitorDockingListDlg.Designer.cs
index 0b5c560..ae44ef7 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/04-docking/SetHydroMonitorDockingListDlg.Designer.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/02-docking/SetHydroMonitorDockingListDlg.Designer.cs
@@ -32,10 +32,10 @@
             ribbonPage1 = new DevExpress.XtraBars.Ribbon.RibbonPage();
             ribbonPageGroup1 = new DevExpress.XtraBars.Ribbon.RibbonPageGroup();
             layoutControl1 = new DevExpress.XtraLayout.LayoutControl();
+            setHydroMonitorDockingListCtrl1 = new SetHydroMonitorDockingListCtrl();
             generalOkAndCancelCtrl1 = new GeneralOkAndCancelCtrl();
             Root = new DevExpress.XtraLayout.LayoutControlGroup();
             layoutControlItem2 = new DevExpress.XtraLayout.LayoutControlItem();
-            setHydroMonitorDockingListCtrl1 = new SetHydroMonitorDockingListCtrl();
             layoutControlItem1 = new DevExpress.XtraLayout.LayoutControlItem();
             ((ISupportInitialize)ribbon).BeginInit();
             ((ISupportInitialize)layoutControl1).BeginInit();
@@ -81,6 +81,13 @@
             layoutControl1.TabIndex = 2;
             layoutControl1.Text = "layoutControl1";
             // 
+            // setHydroMonitorDockingListCtrl1
+            // 
+            setHydroMonitorDockingListCtrl1.Location = new Point(12, 12);
+            setHydroMonitorDockingListCtrl1.Name = "setHydroMonitorDockingListCtrl1";
+            setHydroMonitorDockingListCtrl1.Size = new Size(918, 311);
+            setHydroMonitorDockingListCtrl1.TabIndex = 9;
+            // 
             // generalOkAndCancelCtrl1
             // 
             generalOkAndCancelCtrl1.ButtonCancelMaxSize = new Size(100, 26);
@@ -113,13 +120,6 @@
             layoutControlItem2.TextSize = new Size(0, 0);
             layoutControlItem2.TextVisible = false;
             // 
-            // setHydroMonitorDockingListCtrl1
-            // 
-            setHydroMonitorDockingListCtrl1.Location = new Point(12, 12);
-            setHydroMonitorDockingListCtrl1.Name = "setHydroMonitorDockingListCtrl1";
-            setHydroMonitorDockingListCtrl1.Size = new Size(918, 311);
-            setHydroMonitorDockingListCtrl1.TabIndex = 9;
-            // 
             // layoutControlItem1
             // 
             layoutControlItem1.Control = setHydroMonitorDockingListCtrl1;
@@ -141,7 +141,7 @@
             Ribbon = ribbon;
             RibbonVisibility = DevExpress.XtraBars.Ribbon.RibbonVisibility.Hidden;
             StartPosition = FormStartPosition.CenterParent;
-            Text = "鐩戞祴鐐�";
+            Text = "浼犳劅鍣ㄦ祴鐐�";
             ((ISupportInitialize)ribbon).EndInit();
             ((ISupportInitialize)layoutControl1).EndInit();
             layoutControl1.ResumeLayout(false);
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/04-docking/SetHydroMonitorDockingListDlg.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/02-docking/SetHydroMonitorDockingListDlg.cs
similarity index 100%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/04-docking/SetHydroMonitorDockingListDlg.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/02-docking/SetHydroMonitorDockingListDlg.cs
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/04-docking/SetHydroMonitorDockingListDlg.resx b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/02-docking/SetHydroMonitorDockingListDlg.resx
similarity index 100%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/04-docking/SetHydroMonitorDockingListDlg.resx
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/02-docking/SetHydroMonitorDockingListDlg.resx
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/02-value/HydroMonitorValueViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/02-value/HydroMonitorValueViewModel.cs
deleted file mode 100644
index 0c00c04..0000000
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/02-value/HydroMonitorValueViewModel.cs
+++ /dev/null
@@ -1,84 +0,0 @@
-锘縩amespace Yw.WinFrmUI
-{
-    /// <summary>
-    /// 
-    /// </summary>
-    public class HydroMonitorValueViewModel
-    {
-        /// <summary>
-        /// 
-        /// </summary>
-        public HydroMonitorValueViewModel() { }
-
-        /// <summary>
-        /// 
-        /// </summary>
-        public HydroMonitorValueViewModel
-            (
-                Yw.Vmo.HydroMonitorVmo vmo,
-                Yw.Model.HydroVisualInfo visual,
-                double? propValue
-            )
-        {
-            this.Relation = visual.Name;
-            this.PropName = HydroMonitorPropHelper.GetName(vmo.PropName);
-            this.PropValue = propValue;
-            this.UnitName = HydroMonitorPropHelper.GetUnit(vmo.PropName);
-            this.Flags = Yw.Untity.FlagsHelper.ToString(vmo.Flags);
-            this.SortCode = vmo.SortCode;
-            this.Description = vmo.Description;
-
-            this.Vmo = vmo;
-        }
-
-
-        /// <summary>
-        /// 鏋勪欢
-        /// </summary>
-        [DisplayName("鏋勪欢")]
-        public string Relation { get; set; }
-
-        /// <summary>
-        /// 鍚嶇О
-        /// </summary>
-        [DisplayName("鍚嶇О")]
-        public string PropName { get; set; }
-
-        /// <summary>
-        /// 鐩戞祴鍊�
-        /// </summary>
-        [DisplayName("鐩戞祴鍊�")]
-        public double? PropValue { get; set; }
-
-        /// <summary>
-        /// 鍗曚綅
-        /// </summary>
-        [DisplayName("鍗曚綅")]
-        public string UnitName { get; set; }
-
-        /// <summary>
-        /// 鏍囩
-        /// </summary>
-        [DisplayName("鏍囩")]
-        public string Flags { get; set; }
-
-        /// <summary>
-        /// 鎺掑簭鐮�
-        /// </summary>
-        public int SortCode { get; set; }
-
-        /// <summary>
-        /// 璇存槑
-        /// </summary>	
-        [DisplayName("璇存槑")]
-        public string Description { get; set; }
-
-        /// <summary>
-        /// vmo
-        /// </summary>
-        public Yw.Vmo.HydroMonitorVmo Vmo { get; set; }
-
-
-
-    }
-}
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/05-analyse/HydroMonitorAnalyseViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/03-analyse/HydroMonitorAnalyseViewModel.cs
similarity index 100%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/05-analyse/HydroMonitorAnalyseViewModel.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/03-analyse/HydroMonitorAnalyseViewModel.cs
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/05-analyse/SetHydroMonitorAnalyseListCtrl.Designer.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/03-analyse/SetHydroMonitorAnalyseListCtrl.Designer.cs
similarity index 100%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/05-analyse/SetHydroMonitorAnalyseListCtrl.Designer.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/03-analyse/SetHydroMonitorAnalyseListCtrl.Designer.cs
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/05-analyse/SetHydroMonitorAnalyseListCtrl.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/03-analyse/SetHydroMonitorAnalyseListCtrl.cs
similarity index 100%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/05-analyse/SetHydroMonitorAnalyseListCtrl.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/03-analyse/SetHydroMonitorAnalyseListCtrl.cs
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/05-analyse/SetHydroMonitorAnalyseListCtrl.resx b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/03-analyse/SetHydroMonitorAnalyseListCtrl.resx
similarity index 100%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/05-analyse/SetHydroMonitorAnalyseListCtrl.resx
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/03-analyse/SetHydroMonitorAnalyseListCtrl.resx
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/05-analyse/SetHydroMonitorAnalyseListDlg.Designer.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/03-analyse/SetHydroMonitorAnalyseListDlg.Designer.cs
similarity index 97%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/05-analyse/SetHydroMonitorAnalyseListDlg.Designer.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/03-analyse/SetHydroMonitorAnalyseListDlg.Designer.cs
index dae464b..e84eb85 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/05-analyse/SetHydroMonitorAnalyseListDlg.Designer.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/03-analyse/SetHydroMonitorAnalyseListDlg.Designer.cs
@@ -32,10 +32,10 @@
             ribbonPage1 = new DevExpress.XtraBars.Ribbon.RibbonPage();
             ribbonPageGroup1 = new DevExpress.XtraBars.Ribbon.RibbonPageGroup();
             layoutControl1 = new DevExpress.XtraLayout.LayoutControl();
+            setHydroMonitorAnalyseListCtrl1 = new SetHydroMonitorAnalyseListCtrl();
             generalOkAndCancelCtrl1 = new GeneralOkAndCancelCtrl();
             Root = new DevExpress.XtraLayout.LayoutControlGroup();
             layoutControlItem2 = new DevExpress.XtraLayout.LayoutControlItem();
-            setHydroMonitorAnalyseListCtrl1 = new SetHydroMonitorAnalyseListCtrl();
             layoutControlItem1 = new DevExpress.XtraLayout.LayoutControlItem();
             ((ISupportInitialize)ribbon).BeginInit();
             ((ISupportInitialize)layoutControl1).BeginInit();
@@ -81,6 +81,13 @@
             layoutControl1.TabIndex = 2;
             layoutControl1.Text = "layoutControl1";
             // 
+            // setHydroMonitorAnalyseListCtrl1
+            // 
+            setHydroMonitorAnalyseListCtrl1.Location = new Point(12, 12);
+            setHydroMonitorAnalyseListCtrl1.Name = "setHydroMonitorAnalyseListCtrl1";
+            setHydroMonitorAnalyseListCtrl1.Size = new Size(918, 311);
+            setHydroMonitorAnalyseListCtrl1.TabIndex = 9;
+            // 
             // generalOkAndCancelCtrl1
             // 
             generalOkAndCancelCtrl1.ButtonCancelMaxSize = new Size(100, 26);
@@ -113,13 +120,6 @@
             layoutControlItem2.TextSize = new Size(0, 0);
             layoutControlItem2.TextVisible = false;
             // 
-            // setHydroMonitorDockingListCtrl1
-            // 
-            setHydroMonitorAnalyseListCtrl1.Location = new Point(12, 12);
-            setHydroMonitorAnalyseListCtrl1.Name = "setHydroMonitorDockingListCtrl1";
-            setHydroMonitorAnalyseListCtrl1.Size = new Size(918, 311);
-            setHydroMonitorAnalyseListCtrl1.TabIndex = 9;
-            // 
             // layoutControlItem1
             // 
             layoutControlItem1.Control = setHydroMonitorAnalyseListCtrl1;
@@ -129,7 +129,7 @@
             layoutControlItem1.TextSize = new Size(0, 0);
             layoutControlItem1.TextVisible = false;
             // 
-            // SetHydroMonitorDockingListDlg
+            // SetHydroMonitorAnalyseListDlg
             // 
             AutoScaleDimensions = new SizeF(7F, 14F);
             AutoScaleMode = AutoScaleMode.Font;
@@ -137,11 +137,11 @@
             Controls.Add(layoutControl1);
             Controls.Add(ribbon);
             FormBorderStyle = FormBorderStyle.SizableToolWindow;
-            Name = "SetHydroMonitorDockingListDlg";
+            Name = "SetHydroMonitorAnalyseListDlg";
             Ribbon = ribbon;
             RibbonVisibility = DevExpress.XtraBars.Ribbon.RibbonVisibility.Hidden;
             StartPosition = FormStartPosition.CenterParent;
-            Text = "鐩戞祴鐐�";
+            Text = "鍒嗘瀽娴嬬偣";
             ((ISupportInitialize)ribbon).EndInit();
             ((ISupportInitialize)layoutControl1).EndInit();
             layoutControl1.ResumeLayout(false);
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/05-analyse/SetHydroMonitorAnalyseListDlg.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/03-analyse/SetHydroMonitorAnalyseListDlg.cs
similarity index 100%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/05-analyse/SetHydroMonitorAnalyseListDlg.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/03-analyse/SetHydroMonitorAnalyseListDlg.cs
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/05-analyse/SetHydroMonitorAnalyseListDlg.resx b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/03-analyse/SetHydroMonitorAnalyseListDlg.resx
similarity index 100%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/05-analyse/SetHydroMonitorAnalyseListDlg.resx
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/03-analyse/SetHydroMonitorAnalyseListDlg.resx
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/03-analy/HydroWorkingMonitorAnalyListCtrl.Designer.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/05-analy/HydroWorkingMonitorAnalyListCtrl.Designer.cs
similarity index 100%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/03-analy/HydroWorkingMonitorAnalyListCtrl.Designer.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/05-analy/HydroWorkingMonitorAnalyListCtrl.Designer.cs
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/03-analy/HydroWorkingMonitorAnalyListCtrl.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/05-analy/HydroWorkingMonitorAnalyListCtrl.cs
similarity index 100%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/03-analy/HydroWorkingMonitorAnalyListCtrl.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/05-analy/HydroWorkingMonitorAnalyListCtrl.cs
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/03-analy/HydroWorkingMonitorAnalyListCtrl.resx b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/05-analy/HydroWorkingMonitorAnalyListCtrl.resx
similarity index 100%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/03-analy/HydroWorkingMonitorAnalyListCtrl.resx
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/05-analy/HydroWorkingMonitorAnalyListCtrl.resx
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/16-evaluation/00-core/HydroWorkingMonitorEvaluationViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/16-evaluation/00-core/HydroWorkingMonitorEvaluationViewModel.cs
index cd89719..9909c67 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/16-evaluation/00-core/HydroWorkingMonitorEvaluationViewModel.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/16-evaluation/00-core/HydroWorkingMonitorEvaluationViewModel.cs
@@ -24,9 +24,9 @@
             )
         {
             this.EvaluateName = visual.Name;
-            this.EvaluateItem = HydroVisualCalcuPropHelper.GetName(monitor.PropName);
+            this.EvaluateItem = HydroMonitorPropHelper.GetName(monitor.PropName);
             this.PropName = monitor.PropName;
-            this.UnitName = HydroVisualCalcuPropHelper.GetUnit(monitor.PropName);
+            this.UnitName = HydroMonitorPropHelper.GetUnit(monitor.PropName);
             this.MonitorValue = workingMonitor.PropValue;
             if (this.MonitorValue.HasValue)
             {
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/16-evaluation/01-list/HydroWorkingMonitorEvaluationListCtrl.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/16-evaluation/01-list/HydroWorkingMonitorEvaluationListCtrl.cs
index 87fa12d..d041161 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/16-evaluation/01-list/HydroWorkingMonitorEvaluationListCtrl.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/16-evaluation/01-list/HydroWorkingMonitorEvaluationListCtrl.cs
@@ -29,8 +29,6 @@
 
         private List<HydroWorkingMonitorEvaluationViewModel> _allBindingList = null;//鎵�鏈夌粦瀹氬垪琛�
 
-
-
         /// <summary>
         /// 缁戝畾鏁版嵁
         /// </summary>
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/Properties/DataSources/Yw.WinFrmUI.SetHydroMonitorViewModel.datasource b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/Properties/DataSources/Yw.WinFrmUI.SetHydroMonitorViewModel.datasource
deleted file mode 100644
index 5f0bd36..0000000
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/Properties/DataSources/Yw.WinFrmUI.SetHydroMonitorViewModel.datasource
+++ /dev/null
@@ -1,10 +0,0 @@
-锘�<?xml version="1.0" encoding="utf-8"?>
-<!--
-    This file is automatically generated by Visual Studio. It is 
-    used to store generic object data source configuration information.  
-    Renaming the file extension or editing the content of this file may   
-    cause the file to be unrecognizable by the program.
--->
-<GenericObjectDataSource DisplayName="SetHydroMonitorViewModel" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
-  <TypeInfo>Yw.WinFrmUI.SetHydroMonitorViewModel, Yw.WinFrmUI.Hydro.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>
-</GenericObjectDataSource>
\ No newline at end of file
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/Yw.WinFrmUI.Hydro.Core.csproj b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/Yw.WinFrmUI.Hydro.Core.csproj
index 98d2c29..9310586 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/Yw.WinFrmUI.Hydro.Core.csproj
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/Yw.WinFrmUI.Hydro.Core.csproj
@@ -191,19 +191,16 @@
 		<Compile Update="11-search\HydroVisualSearchListCtrl.cs">
 			<SubType>UserControl</SubType>
 		</Compile>
-		<Compile Update="12-monitor\01-set\SetHydroMonitorListDlg.cs">
-			<SubType>Form</SubType>
-		</Compile>
-		<Compile Update="12-monitor\04-docking\SetHydroMonitorDockingListCtrl.cs">
+		<Compile Update="12-monitor\02-docking\SetHydroMonitorDockingListCtrl.cs">
 		  <SubType>UserControl</SubType>
 		</Compile>
-		<Compile Update="12-monitor\04-docking\SetHydroMonitorDockingListDlg.cs">
+		<Compile Update="12-monitor\02-docking\SetHydroMonitorDockingListDlg.cs">
 		  <SubType>Form</SubType>
 		</Compile>
-		<Compile Update="12-monitor\05-analyse\SetHydroMonitorAnalyseListCtrl.cs">
+		<Compile Update="12-monitor\03-analyse\SetHydroMonitorAnalyseListCtrl.cs">
 		  <SubType>UserControl</SubType>
 		</Compile>
-		<Compile Update="12-monitor\05-analyse\SetHydroMonitorAnalyseListDlg.cs">
+		<Compile Update="12-monitor\03-analyse\SetHydroMonitorAnalyseListDlg.cs">
 		  <SubType>Form</SubType>
 		</Compile>
 		<Compile Update="15-visible\SetHydroVisualVisibleDlg.cs">
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/Yw.WinFrmUI.Hydro.Core.csproj.user b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/Yw.WinFrmUI.Hydro.Core.csproj.user
index 84341c3..7caad03 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/Yw.WinFrmUI.Hydro.Core.csproj.user
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/Yw.WinFrmUI.Hydro.Core.csproj.user
@@ -40,13 +40,10 @@
     <Compile Update="11-search\InputHydroVisualSearchListDlg.cs">
       <SubType>Form</SubType>
     </Compile>
-    <Compile Update="12-monitor\01-set\SetHydroMonitorListCtrl.cs">
+    <Compile Update="12-monitor\01-value\HydroMonitorValueListCtrl.cs">
       <SubType>UserControl</SubType>
     </Compile>
-    <Compile Update="12-monitor\02-value\HydroMonitorValueListCtrl.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Update="12-monitor\03-analy\HydroWorkingMonitorAnalyListCtrl.cs">
+    <Compile Update="12-monitor\05-analy\HydroWorkingMonitorAnalyListCtrl.cs">
       <SubType>UserControl</SubType>
     </Compile>
     <Compile Update="16-evaluation\04-single\HydroSingleWorkingEvaluationCtrl.cs">

--
Gitblit v1.9.3