From e0df433d23b1afffa0b04389ad8b915a91f8debc Mon Sep 17 00:00:00 2001
From: lixiaojun <1287241240@qq.com>
Date: 星期三, 04 十二月 2024 23:40:34 +0800
Subject: [PATCH] 对接部分匹配

---
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/04-scheme/02-page/XhsProjectSimulationSchemePage.cs |    8 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/05-fourlink/HydroFourlinkMatchingViewModel.cs             |   13 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/10-hydrant/HydroHydrantMatchingViewModel.cs               |   13 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/01-tank/HydroTankMatchingViewModel.cs                     |   14 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/08-pressmeter/HydroFlowmeterMatchingViewModel.cs          |   13 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/11-pipe/HydroPipeMatchingViewModel.cs                     |   13 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/15-exchanger/HydroExchangerMatchingViewModel.cs           |   13 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/14-valve/HydroValveMatchingViewModel.cs                   |    8 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/02-blunthead/HydroBluntheadMatchingViewModel.cs           |   13 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/12-translation/HydroTranslationMatchingViewModel.cs       |   13 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/06-meter/HydroMeterMatchingViewModel.cs                   |   13 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/05-property/HydroVisualPropertyCtrl.cs                                |  110 ----
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/05-property/HydroVisualPropertyCtrl.resx                              |  179 ++++----
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/01-import/00-core/ImportXhsProjectHelper.cs            |    4 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/16-compressor/HydroCompressorMatchingViewModel.cs         |   13 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/03-elbow/HydroElbowMatchingViewModel.cs                   |   13 
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/08-working/XhsProjectSimulationWorkingPage.cs       |    2 
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/HStation.WinFrmUI.Xhs.Core.csproj.user                            |    2 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/07-flowmeter/HydroFlowmeterMatchingViewModel.cs           |   13 
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/01-property/SimulationPropertyCtrl.resx             |    0 
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/XhsProjectSimulationCorePage.cs       |    8 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/05-property/HydroVisualPropertyCtrl.Designer.cs                       |   72 +-
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/Yw.WinFrmUI.Hydro.Core.csproj                                         |    6 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/Yw.WinFrmUI.Hydro.Core.csproj.user                                    |    6 
 /dev/null                                                                                             |  120 -----
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/04-threelink/HydroThreelinkMatchingViewModel.cs           |   13 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/00-core/HydroMatchingHelper.cs                            |  239 +++++------
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/01-property/SimulationPropertyCtrl.cs               |  257 ++++++-----
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/02-tank/HydroTankListCtrl.Designer.cs                       |    2 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/05-attribute/HydroModelTypeProAttribute.cs               |    1 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/07-curve/HydroCurvePointViewModel.cs                     |    0 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/12-pump/HydroPumpMatchingViewModel.cs                     |   25 -
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/09-nozzle/HydroNozzleMatchingViewModel.cs                 |   13 
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/01-property/SimulationPropertyCtrl.Designer.cs      |    2 
 34 files changed, 418 insertions(+), 816 deletions(-)

diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/01-import/00-core/ImportXhsProjectHelper.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/01-import/00-core/ImportXhsProjectHelper.cs
index 65e29b8..37ef2ae 100644
--- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/01-import/00-core/ImportXhsProjectHelper.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/01-import/00-core/ImportXhsProjectHelper.cs
@@ -235,10 +235,10 @@
             }
 
             feedBackMsg?.Invoke("姝e湪杩涜浜у搧鍖归厤...", Color.Black);
-            var matchingParas = AssetsMatchingParasHelper.Create(hydroInfo, null);
+            var matchingParas = Yw.WinFrmUI.HydroMatchingHelper.Create(hydroInfo);
             if (AssetsMatchingHelper.Matching(matchingParas, out string error))
             {
-                if (AssetsMatchingParasHelper.Apply(hydroInfo, matchingParas))
+                if (Yw.WinFrmUI.HydroMatchingHelper.Apply(hydroInfo, matchingParas))
                 {
                     feedBackMsg?.Invoke("浜у搧鍖归厤瀹屾垚銆傘�傘��", Color.Green);
                 }
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/01-property/XhsProjectSimulationPropertyCtrl.Designer.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/01-property/SimulationPropertyCtrl.Designer.cs
similarity index 97%
rename from WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/01-property/XhsProjectSimulationPropertyCtrl.Designer.cs
rename to WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/01-property/SimulationPropertyCtrl.Designer.cs
index fac6fd6..e9cb7ee 100644
--- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/01-property/XhsProjectSimulationPropertyCtrl.Designer.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/01-property/SimulationPropertyCtrl.Designer.cs
@@ -1,6 +1,6 @@
 锘縩amespace HStation.WinFrmUI
 {
-    partial class XhsProjectSimulationPropertyCtrl
+    partial class SimulationPropertyCtrl
     {
         /// <summary> 
         /// Required designer variable.
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/01-property/XhsProjectSimulationPropertyCtrl.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/01-property/SimulationPropertyCtrl.cs
similarity index 62%
rename from WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/01-property/XhsProjectSimulationPropertyCtrl.cs
rename to WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/01-property/SimulationPropertyCtrl.cs
index f5ae43a..24280a3 100644
--- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/01-property/XhsProjectSimulationPropertyCtrl.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/01-property/SimulationPropertyCtrl.cs
@@ -7,14 +7,13 @@
     /// <summary>
     /// 椤圭洰妯℃嫙灞炴�ф帶浠�
     /// </summary>
-    public partial class XhsProjectSimulationPropertyCtrl : DevExpress.XtraEditors.XtraUserControl
+    public partial class SimulationPropertyCtrl : DevExpress.XtraEditors.XtraUserControl
     {
-        public XhsProjectSimulationPropertyCtrl()
+        public SimulationPropertyCtrl()
         {
             InitializeComponent();
             this.hydroVisualPropertyCtrl1.MatchingDbEvent += HydroVisualPropertyCtrl1_MatchingDbEvent;
             this.hydroVisualPropertyCtrl1.SetCurveEvent += HydroVisualPropertyCtrl1_SetCurveEvent;
-            this.hydroVisualPropertyCtrl1.SetPatternEvent += HydroVisualPropertyCtrl1_SetPatternEvent;
 
             this.hydroVisualPropertyCtrl1.HydroViewEvent += HydroVisualPropertyCtrl1_HydroViewEvent;
             this.hydroVisualPropertyCtrl1.BlinkLinkNodeEvent += HydroVisualPropertyCtrl1_BlinkLinkNodeEvent;
@@ -58,7 +57,7 @@
         /// </summary>
         public event Action<HydroVisualInfo> FlowEffectPropertyValueChangedEvent;
 
-        #endregion 浜嬩欢闆�
+        #endregion
 
         #region 灞炴�ц祴鍊�
 
@@ -71,7 +70,7 @@
             set { this.hydroVisualPropertyCtrl1.SelectedObject = value; }
         }
 
-        #endregion 灞炴�ц祴鍊�
+        #endregion
 
         #region 灞炴�ф洿鏂�
 
@@ -110,114 +109,153 @@
         #region 浜嬩欢瀹炵幇
 
         //鍖归厤Db
-        private bool HydroVisualPropertyCtrl1_MatchingDbEvent(HydroVisualViewModel vm)
+        private void HydroVisualPropertyCtrl1_MatchingDbEvent(HydroVisualViewModel vm)
         {
             if (vm == null)
             {
-                return false;
+                return;
             }
-            var bol = false;
-            var catalog = HydroParterCatalogHelper.GetCode(vm.Catalog);
-            switch (catalog)
+            switch (vm.Vmo.Catalog)
             {
-                case Yw.Hydro.ParterCatalog.Pump://姘存车
+                case Yw.Hydro.ParterCatalog.Tank:
                     {
-                        /*  var pumpInfo = vm.HydroInfo.Pumps?.Find(x => x.Code == vm.Code);
-                          if (pumpInfo == null)
-                          {
-                              break;
-                          }
-
-                          var input = AssetsMatchingParasHelper.Create(vm.HydroInfo, pumpInfo, null);
-                          var dlg = new PumpSingleMatchingDlg();
-                          dlg.SetBindingData(input);
-                          dlg.ReloadDataEvent += (output) =>
-                          {
-                              bol = AssetsMatchingParasHelper.Apply(vm.HydroInfo, output);
-                              if (bol)
-                              {
-                                  vm.UpdateProperty();
-                              }
-                          };
-                          dlg.ShowDialog();*/
-                    }
-                    break;
-
-                case Yw.Hydro.ParterCatalog.Valve://闃�闂�
-                    {
-                        /* var valveInfo = vm.HydroInfo.Valves?.Find(x => x.Code == vm.Code);
-                         if (valveInfo == null)
-                         {
-                             break;
-                         }
-                         var input = AssetsMatchingParasHelper.Create(vm.HydroInfo, valveInfo, null);
-                         var dlg = new ValveSingleMatchingDlg();
-                         dlg.SetBindingData(input);
-                         dlg.ReloadDataEvent += (rhs) =>
-                         {
-                             bol = AssetsMatchingParasHelper.Apply(vm.HydroInfo, rhs);
-                             if (bol)
-                             {
-                                 vm.UpdateProperty();
-                                 this.hydroVisualPropertyCtrl1.UpdateRows();
-                             }
-                         };
-                         dlg.ShowDialog();*/
-                    }
-                    break;
-
-                case Yw.Hydro.ParterCatalog.Pipe://绠¢亾
-                    {
-                    }
-                    break;
-
-                case Yw.Hydro.ParterCatalog.Elbow://寮ご
-                    {
-                        var elbowInfo = vm.HydroInfo.Elbows?.Find(x => x.Code == vm.Code);
-                        if (elbowInfo == null)
-                        {
-                            break;
-                        }
-                        var input = HydroMatchingHelper.Create(elbowInfo, vm.HydroInfo, null);
-                        var dlg = new ElbowSingMatchingDlg();
-                        dlg.SetBindingData(input);
+                        var tankViewModel = vm as HydroTankViewModel;
+                        var input = HydroMatchingHelper.Create(tankViewModel.Vmo, tankViewModel.HydroInfo);
+                        var dlg = new TankSingleMatchingDlg();
                         dlg.ReloadDataEvent += (output) =>
                         {
-                            bol = HydroMatchingHelper.Apply(vm.HydroInfo, null, output);
-                            if (bol)
-                            {
-                                vm.UpdateProperty();
-                                this.hydroVisualPropertyCtrl1.UpdateRows();
-                            }
+                            HydroMatchingHelper.Apply(tankViewModel.HydroInfo, tankViewModel.Vmo, output);
+                            tankViewModel.UpdateProperty();
+                            this.hydroVisualPropertyCtrl1.UpdateRows();
                         };
+                        dlg.SetBindingData(input);
                         dlg.ShowDialog();
                     }
                     break;
-
-                case Yw.Hydro.ParterCatalog.Threelink://涓夐��
+                case Yw.Hydro.ParterCatalog.Waterbox:
                     {
+                        var tankViewModel = vm as HydroTankViewModel;
+                        var input = HydroMatchingHelper.Create(tankViewModel.Vmo, tankViewModel.HydroInfo);
+                        var dlg = new TankSingleMatchingDlg();
+                        dlg.ReloadDataEvent += (output) =>
+                        {
+                            HydroMatchingHelper.Apply(tankViewModel.HydroInfo, tankViewModel.Vmo, output);
+                            tankViewModel.UpdateProperty();
+                            this.hydroVisualPropertyCtrl1.UpdateRows();
+                        };
+                        dlg.SetBindingData(input);
+                        dlg.ShowDialog();
                     }
                     break;
-
-                case Yw.Hydro.ParterCatalog.Fourlink://鍥涢��
+                case Yw.Hydro.ParterCatalog.Blunthead:
                     {
+
                     }
                     break;
+                case Yw.Hydro.ParterCatalog.Elbow:
+                    {
+                        var elbowViewModel = vm as HydroElbowViewModel;
+                        var input = HydroMatchingHelper.Create(elbowViewModel.Vmo, elbowViewModel.HydroInfo);
+                        var dlg = new ElbowSingMatchingDlg();
+                        dlg.ReloadDataEvent += (output) =>
+                        {
+                            HydroMatchingHelper.Apply(elbowViewModel.HydroInfo, elbowViewModel.Vmo, output);
+                            elbowViewModel.UpdateProperty();
+                            this.hydroVisualPropertyCtrl1.UpdateRows();
+                        };
+                        dlg.SetBindingData(input);
+                        dlg.ShowDialog();
+                    }
+                    break;
+                case Yw.Hydro.ParterCatalog.Threelink:
+                    {
 
+                    }
+                    break;
+                case Yw.Hydro.ParterCatalog.Fourlink:
+                    {
+
+                    }
+                    break;
+                case Yw.Hydro.ParterCatalog.Meter:
+                    {
+
+                    }
+                    break;
+                case Yw.Hydro.ParterCatalog.Flowmeter:
+                    {
+
+                    }
+                    break;
+                case Yw.Hydro.ParterCatalog.Pressmeter:
+                    {
+
+                    }
+                    break;
+                case Yw.Hydro.ParterCatalog.Nozzle:
+                    {
+
+                    }
+                    break;
+                case Yw.Hydro.ParterCatalog.Hydrant:
+                    {
+
+                    }
+                    break;
+                case Yw.Hydro.ParterCatalog.Pipe:
+                    {
+
+                    }
+                    break;
+                case Yw.Hydro.ParterCatalog.Pump:
+                    {
+                        var pumpViewModel = vm as HydroPumpViewModel;
+                        var input = HydroMatchingHelper.Create(pumpViewModel.Vmo, pumpViewModel.HydroInfo);
+                        var dlg = new PumpSingleMatchingDlg();
+                        dlg.ReloadDataEvent += (output) =>
+                        {
+                            HydroMatchingHelper.Apply(pumpViewModel.HydroInfo, pumpViewModel.Vmo, output);
+                            pumpViewModel.UpdateProperty();
+                            this.hydroVisualPropertyCtrl1.UpdateRows();
+                        };
+                        dlg.SetBindingData(input);
+                        dlg.ShowDialog();
+                    }
+                    break;
+                case Yw.Hydro.ParterCatalog.Valve:
+                    {
+
+                    }
+                    break;
+                case Yw.Hydro.ParterCatalog.Exchanger:
+                    {
+
+                    }
+                    break;
+                case Yw.Hydro.ParterCatalog.Compressor:
+                    {
+
+                    }
+                    break;
                 default: break;
+
             }
-            return bol;
         }
 
-        //閫夋嫨鏇茬嚎
-        private bool HydroVisualPropertyCtrl1_SetCurveEvent(HydroVisualViewModel vm, string curve, string curveType)
+        //璁剧疆鏇茬嚎
+        private void HydroVisualPropertyCtrl1_SetCurveEvent(HydroVisualViewModel vm, string curve, string curveType)
         {
             if (vm == null)
             {
-                return false;
+                return;
             }
             switch (curve)
             {
+                case HydroCurve.Tank:
+                    {
+
+                    }
+                    break;
                 case HydroCurve.Pump:
                     {
                         //var pumpInfo = vm.HydroInfo.Pumps?.Find(x => x.Code == vm.Code);
@@ -239,52 +277,29 @@
                         //    return bol;
                         //};
                         //dlg.ShowDialog();
-                        return true;
+                        //return true;
                     }
-                case HydroCurve.PumpQH:
-                    {
-                        return false;
-                    }
-                case HydroCurve.PumpQP:
-                    {
-                        return false;
-                    }
-                case HydroCurve.PumpQE:
-                    {
-                        return false;
-                    }
+                    break;
                 case HydroCurve.Valve:
                     {
-                        return false;
+
                     }
-                case HydroCurve.ValveQL:
+                    break;
+                case HydroCurve.Exchanger:
                     {
-                        return false;
+
                     }
+                    break;
+                case HydroCurve.Compressor:
+                    {
+
+                    }
+                    break;
                 default: break;
             }
-            return false;
         }
 
-        //閫夋嫨妯″紡
-        private bool HydroVisualPropertyCtrl1_SetPatternEvent(HydroVisualViewModel vm, string patternType)
-        {
-            switch (patternType)
-            {
-                case HydroPattern.Head:
-                    {
-                        return false;
-                    }
-                case HydroPattern.Demand:
-                    {
-                        return false;
-                    }
-                default: break;
-            }
-            return false;
-        }
-
-        #endregion 浜嬩欢瀹炵幇
+        #endregion
 
         #region 浜嬩欢绌块��
 
@@ -332,6 +347,6 @@
             this.FlowEffectPropertyValueChangedEvent?.Invoke(vm?.Vmo);
         }
 
-        #endregion 浜嬩欢绌块��
+        #endregion
     }
 }
\ No newline at end of file
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/01-property/XhsProjectSimulationPropertyCtrl.resx b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/01-property/SimulationPropertyCtrl.resx
similarity index 100%
rename from WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/01-property/XhsProjectSimulationPropertyCtrl.resx
rename to WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/01-property/SimulationPropertyCtrl.resx
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/04-scheme/02-page/XhsProjectSimulationSchemePage.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/04-scheme/02-page/XhsProjectSimulationSchemePage.cs
index 40eaf07..034c1e8 100644
--- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/04-scheme/02-page/XhsProjectSimulationSchemePage.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/04-scheme/02-page/XhsProjectSimulationSchemePage.cs
@@ -149,10 +149,10 @@
         #region 灞炴�ф帶浠�
 
         //灞炴�ф帶浠�
-        private XhsProjectSimulationPropertyCtrl _propertyCtrl = null;
+        private SimulationPropertyCtrl _propertyCtrl = null;
 
         //鑾峰彇灞炴�ф帶浠�
-        private XhsProjectSimulationPropertyCtrl GetPropertyCtrl()
+        private SimulationPropertyCtrl GetPropertyCtrl()
         {
             if (_hydroInfo == null)
             {
@@ -160,7 +160,7 @@
             }
             if (_propertyCtrl == null)
             {
-                _propertyCtrl = new XhsProjectSimulationPropertyCtrl();
+                _propertyCtrl = new SimulationPropertyCtrl();
                 _propertyCtrl.Dock = DockStyle.Fill;
                 _propertyCtrl.HydroViewEvent += (visual) =>
                 {
@@ -248,7 +248,7 @@
                 {
                     if (this.controlContainerRight.Controls.Count > 0)
                     {
-                        if (this.controlContainerRight.Controls[0] is XhsProjectSimulationPropertyCtrl)
+                        if (this.controlContainerRight.Controls[0] is SimulationPropertyCtrl)
                         {
                             return true;
                         }
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 b8cf325..4759b3e 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
@@ -147,10 +147,10 @@
         #region 灞炴�ф帶浠�
 
         //灞炴�ф帶浠�
-        private XhsProjectSimulationPropertyCtrl _propertyCtrl = null;
+        private SimulationPropertyCtrl _propertyCtrl = null;
 
         //鑾峰彇灞炴�ф帶浠�
-        private XhsProjectSimulationPropertyCtrl GetPropertyCtrl()
+        private SimulationPropertyCtrl GetPropertyCtrl()
         {
             if (_hydroInfo == null)
             {
@@ -158,7 +158,7 @@
             }
             if (_propertyCtrl == null)
             {
-                _propertyCtrl = new XhsProjectSimulationPropertyCtrl();
+                _propertyCtrl = new SimulationPropertyCtrl();
                 _propertyCtrl.Dock = DockStyle.Fill;
                 _propertyCtrl.HydroViewEvent += (visual) =>
                 {
@@ -246,7 +246,7 @@
                 {
                     if (this.controlContainerRight.Controls.Count > 0)
                     {
-                        if (this.controlContainerRight.Controls[0] is XhsProjectSimulationPropertyCtrl)
+                        if (this.controlContainerRight.Controls[0] is SimulationPropertyCtrl)
                         {
                             return true;
                         }
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/08-working/XhsProjectSimulationWorkingPage.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/08-working/XhsProjectSimulationWorkingPage.cs
index 6e70e31..c8b8fbe 100644
--- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/08-working/XhsProjectSimulationWorkingPage.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/08-working/XhsProjectSimulationWorkingPage.cs
@@ -234,7 +234,7 @@
                 {
                     if (this.controlContainerRight.Controls.Count > 0)
                     {
-                        if (this.controlContainerRight.Controls[0] is XhsProjectSimulationPropertyCtrl)
+                        if (this.controlContainerRight.Controls[0] is SimulationPropertyCtrl)
                         {
                             return true;
                         }
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/HStation.WinFrmUI.Xhs.Core.csproj.user b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/HStation.WinFrmUI.Xhs.Core.csproj.user
index 598a46a..1c18d9f 100644
--- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/HStation.WinFrmUI.Xhs.Core.csproj.user
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/HStation.WinFrmUI.Xhs.Core.csproj.user
@@ -85,7 +85,7 @@
     <Compile Update="03-simulation\01-info\XhsProjectSimulationProjectInfoCtrl.cs">
       <SubType>UserControl</SubType>
     </Compile>
-    <Compile Update="03-simulation\01-property\XhsProjectSimulationPropertyCtrl.cs">
+    <Compile Update="03-simulation\01-property\SimulationPropertyCtrl.cs">
       <SubType>UserControl</SubType>
     </Compile>
     <Compile Update="03-simulation\02-bimface\XhsProjectSimulationBimfaceCtrl.cs">
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/05-attribute/HydroModelTypeProAttribute.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/05-attribute/HydroModelTypeProAttribute.cs
index c255c1f..ad40bee 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/05-attribute/HydroModelTypeProAttribute.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/05-attribute/HydroModelTypeProAttribute.cs
@@ -14,5 +14,4 @@
 
 
     }
-
 }
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/07-curve/01-view/HydroCurveViewCtrl.Designer.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/07-curve/01-view/HydroCurveViewCtrl.Designer.cs
deleted file mode 100644
index 7f31309..0000000
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/07-curve/01-view/HydroCurveViewCtrl.Designer.cs
+++ /dev/null
@@ -1,93 +0,0 @@
-锘縩amespace Yw.WinFrmUI
-{
-    partial class HydroCurveViewCtrl
-    {
-        /// <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();
-            DevExpress.XtraCharts.XYDiagram xyDiagram1 = new DevExpress.XtraCharts.XYDiagram();
-            DevExpress.XtraCharts.Series series1 = new DevExpress.XtraCharts.Series();
-            DevExpress.XtraCharts.SplineSeriesView splineSeriesView1 = new DevExpress.XtraCharts.SplineSeriesView();
-            chartControl1 = new DevExpress.XtraCharts.ChartControl();
-            hydroCurvePointViewModelBindingSource = new BindingSource(components);
-            ((ISupportInitialize)chartControl1).BeginInit();
-            ((ISupportInitialize)xyDiagram1).BeginInit();
-            ((ISupportInitialize)series1).BeginInit();
-            ((ISupportInitialize)splineSeriesView1).BeginInit();
-            ((ISupportInitialize)hydroCurvePointViewModelBindingSource).BeginInit();
-            SuspendLayout();
-            // 
-            // chartControl1
-            // 
-            chartControl1.DataSource = hydroCurvePointViewModelBindingSource;
-            xyDiagram1.AxisX.Title.Visibility = DevExpress.Utils.DefaultBoolean.Default;
-            xyDiagram1.AxisX.VisibleInPanesSerializable = "-1";
-            xyDiagram1.AxisY.Title.Visibility = DevExpress.Utils.DefaultBoolean.Default;
-            xyDiagram1.AxisY.VisibleInPanesSerializable = "-1";
-            chartControl1.Diagram = xyDiagram1;
-            chartControl1.Dock = DockStyle.Fill;
-            chartControl1.Legend.LegendID = -1;
-            chartControl1.Legend.Visibility = DevExpress.Utils.DefaultBoolean.False;
-            chartControl1.Location = new Point(0, 0);
-            chartControl1.Name = "chartControl1";
-            series1.ArgumentDataMember = "X";
-            series1.Name = "Series1";
-            series1.SeriesID = 2;
-            series1.ValueDataMembersSerializable = "Y";
-            series1.View = splineSeriesView1;
-            chartControl1.SeriesSerializable = new DevExpress.XtraCharts.Series[]
-    {
-    series1
-    };
-            chartControl1.Size = new Size(749, 553);
-            chartControl1.TabIndex = 1;
-            // 
-            // hydroCurvePointViewModelBindingSource
-            // 
-            hydroCurvePointViewModelBindingSource.DataSource = typeof(HydroCurvePointViewModel);
-            // 
-            // HydroCurveViewCtrl
-            // 
-            AutoScaleDimensions = new SizeF(7F, 14F);
-            AutoScaleMode = AutoScaleMode.Font;
-            Controls.Add(chartControl1);
-            Name = "HydroCurveViewCtrl";
-            Size = new Size(749, 553);
-            ((ISupportInitialize)xyDiagram1).EndInit();
-            ((ISupportInitialize)splineSeriesView1).EndInit();
-            ((ISupportInitialize)series1).EndInit();
-            ((ISupportInitialize)chartControl1).EndInit();
-            ((ISupportInitialize)hydroCurvePointViewModelBindingSource).EndInit();
-            ResumeLayout(false);
-        }
-
-        #endregion
-
-        private DevExpress.XtraCharts.ChartControl chartControl1;
-        private BindingSource hydroCurvePointViewModelBindingSource;
-    }
-}
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/07-curve/01-view/HydroCurveViewCtrl.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/07-curve/01-view/HydroCurveViewCtrl.cs
deleted file mode 100644
index f5d9a08..0000000
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/07-curve/01-view/HydroCurveViewCtrl.cs
+++ /dev/null
@@ -1,86 +0,0 @@
-锘縰sing DevExpress.Data.Linq.Helpers;
-using DevExpress.DataAccess.Native.Json;
-using DevExpress.XtraCharts;
-
-namespace Yw.WinFrmUI
-{
-    public partial class HydroCurveViewCtrl : DevExpress.XtraEditors.XtraUserControl
-    {
-        public HydroCurveViewCtrl()
-        {
-            InitializeComponent();
-
-        }
-
-        /// <summary>
-        /// x
-        /// </summary>
-        public string TitleTextX
-        {
-            get { return ((XYDiagram)chartControl1.Diagram).AxisX.Title.Text; }
-            set { ((XYDiagram)chartControl1.Diagram).AxisX.Title.Text = value; }
-        }
-
-        /// <summary>
-        /// y
-        /// </summary>
-        public string TitleTextY
-        {
-            get { return ((XYDiagram)chartControl1.Diagram).AxisY.Title.Text; }
-            set { ((XYDiagram)chartControl1.Diagram).AxisY.Title.Text = value; }
-        }
-
-        /// <summary>
-        /// x
-        /// </summary>
-        public AxisX AxisX
-        {
-            get { return ((XYDiagram)chartControl1.Diagram).AxisX; }
-        }
-
-        /// <summary>
-        /// x
-        /// </summary>
-        public AxisY AxisY
-        {
-            get { return ((XYDiagram)chartControl1.Diagram).AxisY; }
-        }
-
-
-        /// <summary>
-        /// 
-        /// </summary>
-        public void SetBindingData(List<HydroCurvePointViewModel> pts)
-        {
-            this.hydroCurvePointViewModelBindingSource.DataSource = pts;
-            this.hydroCurvePointViewModelBindingSource.ResetBindings(false);
-            if (pts != null && pts.Any())
-            {
-                var x_min = pts.Min(x => x.X);
-                var x_max = pts.Max(x => x.X);
-
-                var y_max = pts.Max(x => x.Y);
-                var y_min = pts.Min(x => x.Y);
-
-                x_min = Math.Floor(x_min);
-                x_max = Math.Ceiling(x_max);
-
-                y_min = Math.Floor(y_min);
-                y_max = Math.Ceiling(y_max);
-
-                this.AxisX.WholeRange.SetMinMaxValues(x_min, x_max);
-                this.AxisX.VisualRange.SetMinMaxValues(x_min, x_max);
-
-                this.AxisY.WholeRange.SetMinMaxValues(y_min, y_min);
-                this.AxisY.VisualRange.SetMinMaxValues(y_max, y_max);
-            }
-
-
-
-
-        }
-
-
-
-    }
-}
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/07-curve/01-view/HydroCurveViewCtrl.resx b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/07-curve/01-view/HydroCurveViewCtrl.resx
deleted file mode 100644
index a45c4cc..0000000
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/07-curve/01-view/HydroCurveViewCtrl.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="hydroCurvePointViewModelBindingSource.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/04-viewmodel/07-curve/01-view/HydroCurveViewDlg.Designer.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/07-curve/01-view/HydroCurveViewDlg.Designer.cs
deleted file mode 100644
index 5d61dac..0000000
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/07-curve/01-view/HydroCurveViewDlg.Designer.cs
+++ /dev/null
@@ -1,96 +0,0 @@
-锘縩amespace Yw.WinFrmUI
-{
-    partial class HydroCurveViewDlg
-    {
-        /// <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();
-            hydroCurveViewCtrl1 = new HydroCurveViewCtrl();
-            ((ISupportInitialize)ribbon).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(821, 32);
-            // 
-            // ribbonPage1
-            // 
-            ribbonPage1.Groups.AddRange(new DevExpress.XtraBars.Ribbon.RibbonPageGroup[] { ribbonPageGroup1 });
-            ribbonPage1.Name = "ribbonPage1";
-            ribbonPage1.Text = "ribbonPage1";
-            // 
-            // ribbonPageGroup1
-            // 
-            ribbonPageGroup1.Name = "ribbonPageGroup1";
-            ribbonPageGroup1.Text = "ribbonPageGroup1";
-            // 
-            // hydroCurveViewCtrl1
-            // 
-            hydroCurveViewCtrl1.Dock = DockStyle.Fill;
-            hydroCurveViewCtrl1.Location = new Point(0, 32);
-            hydroCurveViewCtrl1.Name = "hydroCurveViewCtrl1";
-            hydroCurveViewCtrl1.Size = new Size(821, 564);
-            hydroCurveViewCtrl1.TabIndex = 4;
-            hydroCurveViewCtrl1.TitleTextX = "Axis of arguments";
-            hydroCurveViewCtrl1.TitleTextY = "Axis of values";
-            // 
-            // HydroCurveViewDlg
-            // 
-            AutoScaleDimensions = new SizeF(7F, 14F);
-            AutoScaleMode = AutoScaleMode.Font;
-            ClientSize = new Size(821, 596);
-            Controls.Add(hydroCurveViewCtrl1);
-            Controls.Add(ribbon);
-            FormBorderStyle = FormBorderStyle.SizableToolWindow;
-            Name = "HydroCurveViewDlg";
-            Ribbon = ribbon;
-            RibbonVisibility = DevExpress.XtraBars.Ribbon.RibbonVisibility.Hidden;
-            StartPosition = FormStartPosition.CenterParent;
-            Text = "鏇茬嚎";
-            ((ISupportInitialize)ribbon).EndInit();
-            ResumeLayout(false);
-            PerformLayout();
-        }
-
-        #endregion
-
-        private DevExpress.XtraBars.Ribbon.RibbonControl ribbon;
-        private DevExpress.XtraBars.Ribbon.RibbonPage ribbonPage1;
-        private DevExpress.XtraBars.Ribbon.RibbonPageGroup ribbonPageGroup1;
-        private HydroCurveViewCtrl hydroCurveViewCtrl1;
-    }
-}
\ No newline at end of file
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/07-curve/01-view/HydroCurveViewDlg.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/07-curve/01-view/HydroCurveViewDlg.cs
deleted file mode 100644
index d9e9a7c..0000000
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/07-curve/01-view/HydroCurveViewDlg.cs
+++ /dev/null
@@ -1,39 +0,0 @@
-锘縩amespace Yw.WinFrmUI
-{
-    public partial class HydroCurveViewDlg : DevExpress.XtraBars.Ribbon.RibbonForm
-    {
-        public HydroCurveViewDlg()
-        {
-            InitializeComponent();
-            this.IconOptions.Icon = Yw.WinFrmUI.GlobalParas.AppIcon;
-        }
-
-        /// <summary>
-        /// x
-        /// </summary>
-        public string TitleTextX
-        {
-            get { return this.hydroCurveViewCtrl1.TitleTextX; }
-            set { this.hydroCurveViewCtrl1.TitleTextX = value; }
-        }
-
-        /// <summary>
-        /// y
-        /// </summary>
-        public string TitleTextY
-        {
-            get { return this.hydroCurveViewCtrl1.TitleTextY; }
-            set { this.hydroCurveViewCtrl1.TitleTextY = value; }
-        }
-
-        /// <summary>
-        /// 
-        /// </summary>
-        public void SetBindingData(List<HydroCurvePointViewModel> pts)
-        {
-            this.hydroCurveViewCtrl1.SetBindingData(pts);
-        }
-
-
-    }
-}
\ No newline at end of file
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/07-curve/01-view/HydroCurveViewDlg.resx b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/07-curve/01-view/HydroCurveViewDlg.resx
deleted file mode 100644
index af32865..0000000
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/07-curve/01-view/HydroCurveViewDlg.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/04-viewmodel/07-curve/02-set/SetHydroCurveCtrl.Designer.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/07-curve/02-set/SetHydroCurveCtrl.Designer.cs
deleted file mode 100644
index 4856d1b..0000000
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/07-curve/02-set/SetHydroCurveCtrl.Designer.cs
+++ /dev/null
@@ -1,486 +0,0 @@
-锘縩amespace Yw.WinFrmUI
-{
-    partial class SetHydroCurveCtrl
-    {
-        /// <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();
-            ComponentResourceManager resources = new ComponentResourceManager(typeof(SetHydroCurveCtrl));
-            DevExpress.XtraEditors.Controls.EditorButtonImageOptions editorButtonImageOptions2 = new DevExpress.XtraEditors.Controls.EditorButtonImageOptions();
-            DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject5 = new DevExpress.Utils.SerializableAppearanceObject();
-            DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject6 = new DevExpress.Utils.SerializableAppearanceObject();
-            DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject7 = new DevExpress.Utils.SerializableAppearanceObject();
-            DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject8 = new DevExpress.Utils.SerializableAppearanceObject();
-            layoutControl1 = new DevExpress.XtraLayout.LayoutControl();
-            btnImportByExcel = new DevExpress.XtraEditors.SimpleButton();
-            txtCurveType = new DevExpress.XtraEditors.TextEdit();
-            btnSave = new DevExpress.XtraEditors.SimpleButton();
-            txtDescription = new DevExpress.XtraEditors.MemoEdit();
-            txtName = new DevExpress.XtraEditors.TextEdit();
-            gridControl1 = new DevExpress.XtraGrid.GridControl();
-            hydroCurvePointViewModelBindingSource = new BindingSource(components);
-            gridView1 = new DevExpress.XtraGrid.Views.Grid.GridView();
-            colX = new DevExpress.XtraGrid.Columns.GridColumn();
-            colY = new DevExpress.XtraGrid.Columns.GridColumn();
-            colDelete = new DevExpress.XtraGrid.Columns.GridColumn();
-            repositoryItemButtonEdit1 = new DevExpress.XtraEditors.Repository.RepositoryItemButtonEdit();
-            txtCode = new DevExpress.XtraEditors.TextEdit();
-            Root = new DevExpress.XtraLayout.LayoutControlGroup();
-            layoutControlItem2 = new DevExpress.XtraLayout.LayoutControlItem();
-            layoutControlItem4 = new DevExpress.XtraLayout.LayoutControlItem();
-            layoutControlItem5 = new DevExpress.XtraLayout.LayoutControlItem();
-            layoutControlItem8 = new DevExpress.XtraLayout.LayoutControlItem();
-            layoutControlItem1 = new DevExpress.XtraLayout.LayoutControlItem();
-            layoutControlItem6 = new DevExpress.XtraLayout.LayoutControlItem();
-            hydroCurveViewCtrl1 = new HydroCurveViewCtrl();
-            sidePanel1 = new DevExpress.XtraEditors.SidePanel();
-            sidePanel2 = new DevExpress.XtraEditors.SidePanel();
-            sidePanel3 = new DevExpress.XtraEditors.SidePanel();
-            layoutControl2 = new DevExpress.XtraLayout.LayoutControl();
-            layoutControlGroup1 = new DevExpress.XtraLayout.LayoutControlGroup();
-            layoutControlItem3 = new DevExpress.XtraLayout.LayoutControlItem();
-            layoutControlGroup2 = new DevExpress.XtraLayout.LayoutControlGroup();
-            layoutControlGroup3 = new DevExpress.XtraLayout.LayoutControlGroup();
-            ((ISupportInitialize)layoutControl1).BeginInit();
-            layoutControl1.SuspendLayout();
-            ((ISupportInitialize)txtCurveType.Properties).BeginInit();
-            ((ISupportInitialize)txtDescription.Properties).BeginInit();
-            ((ISupportInitialize)txtName.Properties).BeginInit();
-            ((ISupportInitialize)gridControl1).BeginInit();
-            ((ISupportInitialize)hydroCurvePointViewModelBindingSource).BeginInit();
-            ((ISupportInitialize)gridView1).BeginInit();
-            ((ISupportInitialize)repositoryItemButtonEdit1).BeginInit();
-            ((ISupportInitialize)txtCode.Properties).BeginInit();
-            ((ISupportInitialize)Root).BeginInit();
-            ((ISupportInitialize)layoutControlItem2).BeginInit();
-            ((ISupportInitialize)layoutControlItem4).BeginInit();
-            ((ISupportInitialize)layoutControlItem5).BeginInit();
-            ((ISupportInitialize)layoutControlItem8).BeginInit();
-            ((ISupportInitialize)layoutControlItem1).BeginInit();
-            ((ISupportInitialize)layoutControlItem6).BeginInit();
-            sidePanel1.SuspendLayout();
-            sidePanel2.SuspendLayout();
-            sidePanel3.SuspendLayout();
-            ((ISupportInitialize)layoutControl2).BeginInit();
-            layoutControl2.SuspendLayout();
-            ((ISupportInitialize)layoutControlGroup1).BeginInit();
-            ((ISupportInitialize)layoutControlItem3).BeginInit();
-            ((ISupportInitialize)layoutControlGroup2).BeginInit();
-            ((ISupportInitialize)layoutControlGroup3).BeginInit();
-            SuspendLayout();
-            // 
-            // layoutControl1
-            // 
-            layoutControl1.Controls.Add(btnImportByExcel);
-            layoutControl1.Controls.Add(txtCurveType);
-            layoutControl1.Controls.Add(btnSave);
-            layoutControl1.Controls.Add(txtDescription);
-            layoutControl1.Controls.Add(txtName);
-            layoutControl1.Controls.Add(txtCode);
-            layoutControl1.Dock = DockStyle.Fill;
-            layoutControl1.Location = new Point(0, 0);
-            layoutControl1.Margin = new Padding(4, 5, 4, 5);
-            layoutControl1.Name = "layoutControl1";
-            layoutControl1.OptionsCustomizationForm.DesignTimeCustomizationFormPositionAndSize = new Rectangle(567, 228, 1237, 1023);
-            layoutControl1.Root = Root;
-            layoutControl1.Size = new Size(403, 249);
-            layoutControl1.TabIndex = 0;
-            layoutControl1.Text = "layoutControl1";
-            // 
-            // btnImportByExcel
-            // 
-            btnImportByExcel.Appearance.BackColor = DevExpress.LookAndFeel.DXSkinColors.FillColors.Primary;
-            btnImportByExcel.Appearance.ForeColor = Color.White;
-            btnImportByExcel.Appearance.Options.UseBackColor = true;
-            btnImportByExcel.Appearance.Options.UseForeColor = true;
-            btnImportByExcel.ImageOptions.AllowGlyphSkinning = DevExpress.Utils.DefaultBoolean.True;
-            btnImportByExcel.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("btnImportByExcel.ImageOptions.SvgImage");
-            btnImportByExcel.ImageOptions.SvgImageSize = new Size(18, 18);
-            btnImportByExcel.Location = new Point(50, 202);
-            btnImportByExcel.Margin = new Padding(4, 5, 4, 5);
-            btnImportByExcel.Name = "btnImportByExcel";
-            btnImportByExcel.Size = new Size(115, 32);
-            btnImportByExcel.StyleController = layoutControl1;
-            btnImportByExcel.TabIndex = 13;
-            btnImportByExcel.Text = "Excel瀵煎叆";
-            // 
-            // txtCurveType
-            // 
-            txtCurveType.Location = new Point(66, 109);
-            txtCurveType.Margin = new Padding(4, 5, 4, 5);
-            txtCurveType.Name = "txtCurveType";
-            txtCurveType.Properties.ReadOnly = true;
-            txtCurveType.Size = new Size(325, 28);
-            txtCurveType.StyleController = layoutControl1;
-            txtCurveType.TabIndex = 12;
-            // 
-            // btnSave
-            // 
-            btnSave.Appearance.BackColor = DevExpress.LookAndFeel.DXSkinColors.FillColors.Question;
-            btnSave.Appearance.ForeColor = Color.White;
-            btnSave.Appearance.Options.UseBackColor = true;
-            btnSave.Appearance.Options.UseForeColor = true;
-            btnSave.ImageOptions.AllowGlyphSkinning = DevExpress.Utils.DefaultBoolean.True;
-            btnSave.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("btnSave.ImageOptions.SvgImage");
-            btnSave.ImageOptions.SvgImageSize = new Size(18, 18);
-            btnSave.Location = new Point(245, 202);
-            btnSave.Margin = new Padding(4, 5, 4, 5);
-            btnSave.Name = "btnSave";
-            btnSave.Size = new Size(108, 32);
-            btnSave.StyleController = layoutControl1;
-            btnSave.TabIndex = 11;
-            btnSave.Text = "淇濆瓨";
-            btnSave.Click += btnSave_Click;
-            // 
-            // txtDescription
-            // 
-            txtDescription.Location = new Point(66, 141);
-            txtDescription.Margin = new Padding(4, 5, 4, 5);
-            txtDescription.Name = "txtDescription";
-            txtDescription.Size = new Size(325, 54);
-            txtDescription.StyleController = layoutControl1;
-            txtDescription.TabIndex = 8;
-            // 
-            // txtName
-            // 
-            txtName.Location = new Point(66, 77);
-            txtName.Margin = new Padding(4, 5, 4, 5);
-            txtName.Name = "txtName";
-            txtName.Size = new Size(325, 28);
-            txtName.StyleController = layoutControl1;
-            txtName.TabIndex = 7;
-            // 
-            // gridControl1
-            // 
-            gridControl1.DataSource = hydroCurvePointViewModelBindingSource;
-            gridControl1.EmbeddedNavigator.Margin = new Padding(4, 5, 4, 5);
-            gridControl1.Location = new Point(0, 33);
-            gridControl1.MainView = gridView1;
-            gridControl1.Margin = new Padding(4, 5, 4, 5);
-            gridControl1.Name = "gridControl1";
-            gridControl1.RepositoryItems.AddRange(new DevExpress.XtraEditors.Repository.RepositoryItem[] { repositoryItemButtonEdit1 });
-            gridControl1.Size = new Size(403, 784);
-            gridControl1.TabIndex = 6;
-            gridControl1.ViewCollection.AddRange(new DevExpress.XtraGrid.Views.Base.BaseView[] { gridView1 });
-            // 
-            // hydroCurvePointViewModelBindingSource
-            // 
-            hydroCurvePointViewModelBindingSource.DataSource = typeof(HydroCurvePointViewModel);
-            // 
-            // gridView1
-            // 
-            gridView1.Appearance.ViewCaption.Options.UseTextOptions = true;
-            gridView1.Appearance.ViewCaption.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Near;
-            gridView1.Columns.AddRange(new DevExpress.XtraGrid.Columns.GridColumn[] { colX, colY, colDelete });
-            gridView1.DetailHeight = 550;
-            gridView1.GridControl = gridControl1;
-            gridView1.Name = "gridView1";
-            gridView1.OptionsEditForm.PopupEditFormWidth = 1143;
-            gridView1.ViewCaption = "鏇茬嚎鐐�";
-            gridView1.RowCellClick += gridView1_RowCellClick;
-            // 
-            // colX
-            // 
-            colX.FieldName = "X";
-            colX.MinWidth = 29;
-            colX.Name = "colX";
-            colX.Visible = true;
-            colX.VisibleIndex = 0;
-            colX.Width = 107;
-            // 
-            // colY
-            // 
-            colY.FieldName = "Y";
-            colY.MinWidth = 29;
-            colY.Name = "colY";
-            colY.Visible = true;
-            colY.VisibleIndex = 1;
-            colY.Width = 107;
-            // 
-            // colDelete
-            // 
-            colDelete.Caption = "鍒犻櫎";
-            colDelete.ColumnEdit = repositoryItemButtonEdit1;
-            colDelete.MaxWidth = 71;
-            colDelete.MinWidth = 71;
-            colDelete.Name = "colDelete";
-            colDelete.OptionsColumn.AllowEdit = false;
-            colDelete.Visible = true;
-            colDelete.VisibleIndex = 2;
-            colDelete.Width = 71;
-            // 
-            // repositoryItemButtonEdit1
-            // 
-            repositoryItemButtonEdit1.AutoHeight = false;
-            editorButtonImageOptions2.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("editorButtonImageOptions2.SvgImage");
-            editorButtonImageOptions2.SvgImageSize = new Size(20, 20);
-            repositoryItemButtonEdit1.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] { new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Glyph, "", -1, true, true, false, editorButtonImageOptions2, new DevExpress.Utils.KeyShortcut(Keys.None), serializableAppearanceObject5, serializableAppearanceObject6, serializableAppearanceObject7, serializableAppearanceObject8, "", null, null, DevExpress.Utils.ToolTipAnchor.Default) });
-            repositoryItemButtonEdit1.Name = "repositoryItemButtonEdit1";
-            repositoryItemButtonEdit1.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.HideTextEditor;
-            // 
-            // txtCode
-            // 
-            txtCode.Location = new Point(66, 45);
-            txtCode.Margin = new Padding(4, 5, 4, 5);
-            txtCode.Name = "txtCode";
-            txtCode.Properties.ReadOnly = true;
-            txtCode.Size = new Size(325, 28);
-            txtCode.StyleController = layoutControl1;
-            txtCode.TabIndex = 5;
-            // 
-            // Root
-            // 
-            Root.EnableIndentsWithoutBorders = DevExpress.Utils.DefaultBoolean.True;
-            Root.GroupBordersVisible = false;
-            Root.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] { layoutControlGroup3 });
-            Root.Name = "Root";
-            Root.Padding = new DevExpress.XtraLayout.Utils.Padding(0, 0, 0, 0);
-            Root.Size = new Size(403, 249);
-            Root.TextVisible = false;
-            // 
-            // layoutControlItem2
-            // 
-            layoutControlItem2.Control = txtCode;
-            layoutControlItem2.Location = new Point(0, 0);
-            layoutControlItem2.Name = "layoutControlItem2";
-            layoutControlItem2.Size = new Size(383, 32);
-            layoutControlItem2.Text = "缂栫爜:";
-            layoutControlItem2.TextSize = new Size(42, 22);
-            // 
-            // layoutControlItem4
-            // 
-            layoutControlItem4.Control = txtName;
-            layoutControlItem4.Location = new Point(0, 32);
-            layoutControlItem4.Name = "layoutControlItem4";
-            layoutControlItem4.Size = new Size(383, 32);
-            layoutControlItem4.Text = "鍚嶇О:";
-            layoutControlItem4.TextSize = new Size(42, 22);
-            // 
-            // layoutControlItem5
-            // 
-            layoutControlItem5.Control = txtDescription;
-            layoutControlItem5.Location = new Point(0, 96);
-            layoutControlItem5.Name = "layoutControlItem5";
-            layoutControlItem5.Size = new Size(383, 58);
-            layoutControlItem5.Text = "璇存槑:";
-            layoutControlItem5.TextSize = new Size(42, 22);
-            // 
-            // layoutControlItem8
-            // 
-            layoutControlItem8.Control = btnSave;
-            layoutControlItem8.Location = new Point(195, 154);
-            layoutControlItem8.Name = "layoutControlItem8";
-            layoutControlItem8.Padding = new DevExpress.XtraLayout.Utils.Padding(40, 40, 5, 5);
-            layoutControlItem8.Size = new Size(188, 42);
-            layoutControlItem8.TextSize = new Size(0, 0);
-            layoutControlItem8.TextVisible = false;
-            // 
-            // layoutControlItem1
-            // 
-            layoutControlItem1.Control = txtCurveType;
-            layoutControlItem1.Location = new Point(0, 64);
-            layoutControlItem1.Name = "layoutControlItem1";
-            layoutControlItem1.Size = new Size(383, 32);
-            layoutControlItem1.Text = "绫诲瀷:";
-            layoutControlItem1.TextSize = new Size(42, 22);
-            // 
-            // layoutControlItem6
-            // 
-            layoutControlItem6.Control = btnImportByExcel;
-            layoutControlItem6.Location = new Point(0, 154);
-            layoutControlItem6.Name = "layoutControlItem6";
-            layoutControlItem6.Padding = new DevExpress.XtraLayout.Utils.Padding(40, 40, 5, 5);
-            layoutControlItem6.Size = new Size(195, 42);
-            layoutControlItem6.TextSize = new Size(0, 0);
-            layoutControlItem6.TextVisible = false;
-            // 
-            // hydroCurveViewCtrl1
-            // 
-            hydroCurveViewCtrl1.Dock = DockStyle.Fill;
-            hydroCurveViewCtrl1.Location = new Point(404, 0);
-            hydroCurveViewCtrl1.Margin = new Padding(6, 8, 6, 8);
-            hydroCurveViewCtrl1.Name = "hydroCurveViewCtrl1";
-            hydroCurveViewCtrl1.Size = new Size(900, 1067);
-            hydroCurveViewCtrl1.TabIndex = 0;
-            hydroCurveViewCtrl1.TitleTextX = "Axis of arguments";
-            hydroCurveViewCtrl1.TitleTextY = "Axis of values";
-            // 
-            // sidePanel1
-            // 
-            sidePanel1.Controls.Add(sidePanel3);
-            sidePanel1.Controls.Add(sidePanel2);
-            sidePanel1.Dock = DockStyle.Left;
-            sidePanel1.Location = new Point(0, 0);
-            sidePanel1.Name = "sidePanel1";
-            sidePanel1.Size = new Size(404, 1067);
-            sidePanel1.TabIndex = 1;
-            sidePanel1.Text = "sidePanel1";
-            // 
-            // sidePanel2
-            // 
-            sidePanel2.Controls.Add(layoutControl1);
-            sidePanel2.Dock = DockStyle.Top;
-            sidePanel2.Location = new Point(0, 0);
-            sidePanel2.Name = "sidePanel2";
-            sidePanel2.Size = new Size(403, 250);
-            sidePanel2.TabIndex = 0;
-            sidePanel2.Text = "sidePanel2";
-            // 
-            // sidePanel3
-            // 
-            sidePanel3.Controls.Add(layoutControl2);
-            sidePanel3.Dock = DockStyle.Fill;
-            sidePanel3.Location = new Point(0, 250);
-            sidePanel3.Name = "sidePanel3";
-            sidePanel3.Size = new Size(403, 817);
-            sidePanel3.TabIndex = 1;
-            sidePanel3.Text = "sidePanel3";
-            // 
-            // layoutControl2
-            // 
-            layoutControl2.Controls.Add(gridControl1);
-            layoutControl2.Dock = DockStyle.Fill;
-            layoutControl2.Location = new Point(0, 0);
-            layoutControl2.Name = "layoutControl2";
-            layoutControl2.OptionsCustomizationForm.DesignTimeCustomizationFormPositionAndSize = new Rectangle(1061, 721, 975, 600);
-            layoutControl2.Root = layoutControlGroup1;
-            layoutControl2.Size = new Size(403, 817);
-            layoutControl2.TabIndex = 0;
-            layoutControl2.Text = "layoutControl2";
-            // 
-            // layoutControlGroup1
-            // 
-            layoutControlGroup1.EnableIndentsWithoutBorders = DevExpress.Utils.DefaultBoolean.True;
-            layoutControlGroup1.GroupBordersVisible = false;
-            layoutControlGroup1.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] { layoutControlGroup2 });
-            layoutControlGroup1.Name = "Root";
-            layoutControlGroup1.Padding = new DevExpress.XtraLayout.Utils.Padding(0, 0, 0, 0);
-            layoutControlGroup1.Size = new Size(403, 817);
-            layoutControlGroup1.TextVisible = false;
-            // 
-            // layoutControlItem3
-            // 
-            layoutControlItem3.Control = gridControl1;
-            layoutControlItem3.Location = new Point(0, 0);
-            layoutControlItem3.Name = "layoutControlItem3";
-            layoutControlItem3.Padding = new DevExpress.XtraLayout.Utils.Padding(0, 0, 0, 0);
-            layoutControlItem3.Size = new Size(403, 784);
-            layoutControlItem3.TextSize = new Size(0, 0);
-            layoutControlItem3.TextVisible = false;
-            // 
-            // layoutControlGroup2
-            // 
-            layoutControlGroup2.GroupStyle = DevExpress.Utils.GroupStyle.Title;
-            layoutControlGroup2.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] { layoutControlItem3 });
-            layoutControlGroup2.Location = new Point(0, 0);
-            layoutControlGroup2.Name = "layoutControlGroup2";
-            layoutControlGroup2.Padding = new DevExpress.XtraLayout.Utils.Padding(0, 0, 0, 0);
-            layoutControlGroup2.Size = new Size(403, 817);
-            layoutControlGroup2.Spacing = new DevExpress.XtraLayout.Utils.Padding(0, 0, 0, 0);
-            layoutControlGroup2.Text = "鏇茬嚎瀹氫箟鐐�";
-            // 
-            // layoutControlGroup3
-            // 
-            layoutControlGroup3.GroupStyle = DevExpress.Utils.GroupStyle.Title;
-            layoutControlGroup3.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] { layoutControlItem2, layoutControlItem4, layoutControlItem1, layoutControlItem5, layoutControlItem6, layoutControlItem8 });
-            layoutControlGroup3.Location = new Point(0, 0);
-            layoutControlGroup3.Name = "layoutControlGroup3";
-            layoutControlGroup3.Size = new Size(403, 249);
-            layoutControlGroup3.Spacing = new DevExpress.XtraLayout.Utils.Padding(0, 0, 0, 0);
-            layoutControlGroup3.Text = "鍩虹淇℃伅";
-            // 
-            // SetHydroCurveCtrl
-            // 
-            AutoScaleDimensions = new SizeF(10F, 22F);
-            AutoScaleMode = AutoScaleMode.Font;
-            Controls.Add(hydroCurveViewCtrl1);
-            Controls.Add(sidePanel1);
-            Margin = new Padding(4, 5, 4, 5);
-            Name = "SetHydroCurveCtrl";
-            Size = new Size(1304, 1067);
-            ((ISupportInitialize)layoutControl1).EndInit();
-            layoutControl1.ResumeLayout(false);
-            ((ISupportInitialize)txtCurveType.Properties).EndInit();
-            ((ISupportInitialize)txtDescription.Properties).EndInit();
-            ((ISupportInitialize)txtName.Properties).EndInit();
-            ((ISupportInitialize)gridControl1).EndInit();
-            ((ISupportInitialize)hydroCurvePointViewModelBindingSource).EndInit();
-            ((ISupportInitialize)gridView1).EndInit();
-            ((ISupportInitialize)repositoryItemButtonEdit1).EndInit();
-            ((ISupportInitialize)txtCode.Properties).EndInit();
-            ((ISupportInitialize)Root).EndInit();
-            ((ISupportInitialize)layoutControlItem2).EndInit();
-            ((ISupportInitialize)layoutControlItem4).EndInit();
-            ((ISupportInitialize)layoutControlItem5).EndInit();
-            ((ISupportInitialize)layoutControlItem8).EndInit();
-            ((ISupportInitialize)layoutControlItem1).EndInit();
-            ((ISupportInitialize)layoutControlItem6).EndInit();
-            sidePanel1.ResumeLayout(false);
-            sidePanel2.ResumeLayout(false);
-            sidePanel3.ResumeLayout(false);
-            ((ISupportInitialize)layoutControl2).EndInit();
-            layoutControl2.ResumeLayout(false);
-            ((ISupportInitialize)layoutControlGroup1).EndInit();
-            ((ISupportInitialize)layoutControlItem3).EndInit();
-            ((ISupportInitialize)layoutControlGroup2).EndInit();
-            ((ISupportInitialize)layoutControlGroup3).EndInit();
-            ResumeLayout(false);
-        }
-
-        #endregion
-        private DevExpress.XtraLayout.LayoutControl layoutControl1;
-        private DevExpress.XtraLayout.LayoutControlGroup Root;
-        private HydroCurveViewCtrl hydroCurveViewCtrl1;
-        private DevExpress.XtraGrid.GridControl gridControl1;
-        private DevExpress.XtraGrid.Views.Grid.GridView gridView1;
-        private DevExpress.XtraEditors.TextEdit txtCode;
-        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem2;
-        private BindingSource hydroCurvePointViewModelBindingSource;
-        private DevExpress.XtraGrid.Columns.GridColumn colX;
-        private DevExpress.XtraGrid.Columns.GridColumn colY;
-        private DevExpress.XtraEditors.SimpleButton btnSave;
-        private DevExpress.XtraEditors.MemoEdit txtDescription;
-        private DevExpress.XtraEditors.TextEdit txtName;
-        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem4;
-        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem5;
-        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem8;
-        private DevExpress.XtraEditors.SimpleButton btnImportByExcel;
-        private DevExpress.XtraEditors.TextEdit txtCurveType;
-        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem1;
-        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem6;
-        private DevExpress.XtraGrid.Columns.GridColumn colDelete;
-        private DevExpress.XtraEditors.Repository.RepositoryItemButtonEdit repositoryItemButtonEdit1;
-        private DevExpress.XtraEditors.SidePanel sidePanel1;
-        private DevExpress.XtraEditors.SidePanel sidePanel3;
-        private DevExpress.XtraLayout.LayoutControl layoutControl2;
-        private DevExpress.XtraLayout.LayoutControlGroup layoutControlGroup1;
-        private DevExpress.XtraLayout.LayoutControlGroup layoutControlGroup2;
-        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem3;
-        private DevExpress.XtraEditors.SidePanel sidePanel2;
-        private DevExpress.XtraLayout.LayoutControlGroup layoutControlGroup3;
-    }
-}
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/07-curve/02-set/SetHydroCurveCtrl.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/07-curve/02-set/SetHydroCurveCtrl.cs
deleted file mode 100644
index cd1d23d..0000000
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/07-curve/02-set/SetHydroCurveCtrl.cs
+++ /dev/null
@@ -1,126 +0,0 @@
-锘縰sing System.Data;
-
-namespace Yw.WinFrmUI
-{
-    public partial class SetHydroCurveCtrl : DevExpress.XtraEditors.XtraUserControl
-    {
-        public SetHydroCurveCtrl()
-        {
-            InitializeComponent();
-            this.gridView1.SetBindingLimitEditView(25);
-            this.gridView1.ShowViewCaption(25);
-        }
-
-        /// <summary>
-        /// 淇濆瓨鏇茬嚎淇℃伅浜嬩欢
-        /// </summary>
-        public event Action<Yw.Model.HydroCurveInfo> SaveCurveInfoEvent;
-
-        private Yw.Model.HydroModelInfo _hydroInfo = null;//姘村姏淇℃伅
-        private Yw.Model.HydroCurveInfo _curveInfo = null;//鏇茬嚎淇℃伅
-        private BindingList<HydroCurvePointViewModel> _allBindingList = null;
-
-        /// <summary>
-        /// 
-        /// </summary>
-        public void SetBindingData(Yw.Model.HydroModelInfo hydroInfo, Yw.Model.HydroCurveInfo curveInfo, string curve, string curveType)
-        {
-            if (hydroInfo == null)
-            {
-                return;
-            }
-            _hydroInfo = hydroInfo;
-            _curveInfo = curveInfo;
-            if (_curveInfo == null)
-            {
-                _curveInfo = new Model.HydroCurveInfo();
-                _curveInfo.Catalog = Yw.Hydro.ParterCatalog.Curve;
-                _curveInfo.Code = Yw.Untity.UniqueHelper.CreateFromFirst("curve", _hydroInfo.GetAllParters().Select(x => x.Code).ToList());
-                _curveInfo.CurveType = curveType;
-            }
-            this.txtCode.EditValue = _curveInfo.Code;
-            this.txtName.EditValue = _curveInfo.Name;
-            this.txtDescription.EditValue = _curveInfo.Description;
-            switch (curve)
-            {
-                case HydroCurve.TankVol:
-                    {
-
-                    }
-                    break;
-                case HydroCurve.PumpQH:
-                    {
-                        this.txtCurveType.EditValue = "姘存车娴侀噺鎵▼鏇茬嚎";
-                        this.colX.Caption = "Q(m鲁/h)";
-                        this.colY.Caption = "H(m)";
-                        this.hydroCurveViewCtrl1.TitleTextX = "娴侀噺锛坢鲁/h锛�";
-                        this.hydroCurveViewCtrl1.TitleTextY = "鎵▼锛坢锛�";
-                    }
-                    break;
-                case HydroCurve.PumpQP:
-                    {
-                        this.txtCurveType.EditValue = "姘存车娴侀噺鍔熺巼鏇茬嚎";
-                        this.colX.Caption = "Q(m鲁/h)";
-                        this.colY.Caption = "P(kW)";
-                        this.hydroCurveViewCtrl1.TitleTextX = "娴侀噺锛坢鲁/h锛�";
-                        this.hydroCurveViewCtrl1.TitleTextY = "鍔熺巼锛坘W锛�";
-                    }
-                    break;
-                case HydroCurve.PumpQE:
-                    {
-                        this.txtCurveType.EditValue = "姘存车娴侀噺鏁堢巼鏇茬嚎";
-                        this.colX.Caption = "Q(m鲁/h)";
-                        this.colY.Caption = "E(%)";
-                        this.hydroCurveViewCtrl1.TitleTextX = "娴侀噺锛坢鲁/h锛�";
-                        this.hydroCurveViewCtrl1.TitleTextY = "鏁堢巼锛�%锛�";
-                    }
-                    break;
-                case HydroCurve.ValveQL:
-                    {
-                        this.txtCurveType.EditValue = "闃�闂ㄦ按澶存崯澶辨洸绾�";
-                        this.colX.Caption = "Q(m鲁/h)";
-                        this.colY.Caption = "H(m)";
-                        this.hydroCurveViewCtrl1.TitleTextX = "娴侀噺锛坢鲁/h锛�";
-                        this.hydroCurveViewCtrl1.TitleTextY = "鍘嬪姏锛坢锛�";
-                    }
-                    break;
-                default: break;
-            }
-            _allBindingList = new BindingList<HydroCurvePointViewModel>();
-            _curveInfo.CurveData?.ForEach(x =>
-            {
-                var pt = new HydroCurvePointViewModel(x.X, x.Y);
-                _allBindingList.Add(pt);
-            });
-            this.hydroCurvePointViewModelBindingSource.DataSource = _allBindingList;
-            this.hydroCurvePointViewModelBindingSource.ResetBindings(false);
-
-            this.hydroCurveViewCtrl1.SetBindingData(_allBindingList.ToList());
-        }
-
-        //淇濆瓨
-        private void btnSave_Click(object sender, EventArgs e)
-        {
-            _curveInfo.Name = this.txtName.Text.Trim();
-            _curveInfo.Description = this.txtDescription.Text.Trim();
-            _curveInfo.CurveData = _allBindingList?.Select(x => new Model.Hydro.CurvePoint(x.X, x.Y)).ToList();
-            this.hydroCurveViewCtrl1.SetBindingData(_allBindingList.ToList());
-            this.SaveCurveInfoEvent?.Invoke(_curveInfo);
-        }
-
-        //鍒犻櫎
-        private void gridView1_RowCellClick(object sender, DevExpress.XtraGrid.Views.Grid.RowCellClickEventArgs e)
-        {
-            if (e.RowHandle < 0)
-            {
-                return;
-            }
-            if (e.Column == this.colDelete)
-            {
-                _allBindingList.RemoveAt(e.RowHandle);
-            }
-        }
-
-
-    }
-}
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/07-curve/02-set/SetHydroCurveCtrl.resx b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/07-curve/02-set/SetHydroCurveCtrl.resx
deleted file mode 100644
index 63f27b0..0000000
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/07-curve/02-set/SetHydroCurveCtrl.resx
+++ /dev/null
@@ -1,226 +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>
-  <assembly alias="DevExpress.Data.v23.2" name="DevExpress.Data.v23.2, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
-  <data name="btnImportByExcel.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
-    <value>
-        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
-        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
-        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAHYNAAAC77u/
-        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
-        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
-        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
-        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
-        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkJsdWV7ZmlsbDojMTE3N0Q3O30KCS5H
-        cmVlbntmaWxsOiMwMzlDMjM7fQoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9Cgkuc3Qwe29wYWNpdHk6MC4z
-        O30KPC9zdHlsZT4NCiAgPHBhdGggZD0iTTgsNGgxOHY2aDJWM2MwLTAuNS0wLjUtMS0xLTFIN0M2LjUs
-        Miw2LDIuNSw2LDN2N2gyVjR6IiBjbGFzcz0iQmxhY2siIC8+DQogIDxwYXRoIGQ9Ik0yNiwyNkg4di04
-        SDZ2OWMwLDAuNSwwLjUsMSwxLDFoMjBjMC41LDAsMS0wLjUsMS0xdi05aC0yVjI2eiIgY2xhc3M9IkJs
-        YWNrIiAvPg0KICA8cGF0aCBkPSJNMzEsOEgzQzIuNCw4LDIsOC40LDIsOXYxMGMwLDAuNiwwLjQsMSwx
-        LDFoMjhjMC42LDAsMS0wLjQsMS0xVjlDMzIsOC40LDMxLjYsOCwzMSw4eiBNOS4xLDE4bC0xLjMtMi41
-        ICBjLTAuMS0wLjEtMC4xLTAuMy0wLjItMC41aDBjMCwwLjEtMC4xLDAuMy0wLjIsMC41TDYuMSwxOEg0
-        bDIuNS0zLjlsLTIuMi0zLjloMi4xbDEuMSwyLjNjMC4xLDAuMiwwLjIsMC40LDAuMiwwLjdoMCAgYzAt
-        MC4yLDAuMS0wLjQsMC4yLTAuN2wxLjItMi4zaDEuOWwtMi4zLDMuOGwyLjQsMy45SDkuMXogTTE2Ljcs
-        MThoLTQuNnYtNy43aDEuN3Y2LjNoMi45VjE4eiBNMjIuNCwxNi45Yy0wLjIsMC4zLTAuNCwwLjUtMC43
-        LDAuNyAgcy0wLjYsMC4zLTEsMC40Yy0wLjQsMC4xLTAuOCwwLjEtMS4yLDAuMWMtMC40LDAtMC44LDAt
-        MS4yLTAuMWMtMC40LTAuMS0wLjctMC4yLTEtMC4zVjE2YzAuMywwLjMsMC42LDAuNSwxLDAuNnMwLjcs
-        MC4yLDEuMSwwLjIgIGMwLjIsMCwwLjQsMCwwLjYtMC4xczAuMy0wLjEsMC40LTAuMmMwLjEtMC4xLDAu
-        Mi0wLjIsMC4yLTAuMmMwLjEtMC4xLDAuMS0wLjIsMC4xLTAuM2MwLTAuMiwwLTAuMy0wLjEtMC40ICBj
-        LTAuMS0wLjEtMC4yLTAuMi0wLjQtMC4zUzIwLDE1LjEsMTkuOCwxNXMtMC40LTAuMi0wLjctMC4zYy0w
-        LjYtMC4zLTEuMS0wLjYtMS4zLTAuOWMtMC4zLTAuNC0wLjQtMC44LTAuNC0xLjMgIGMwLTAuNCwwLjEt
-        MC43LDAuMi0xYzAuMi0wLjMsMC40LTAuNSwwLjctMC43YzAuMy0wLjIsMC42LTAuMywxLTAuNHMwLjgt
-        MC4xLDEuMi0wLjFjMC40LDAsMC44LDAsMS4xLDAuMWMwLjMsMCwwLjYsMC4xLDAuOSwwLjIgIHYxLjZj
-        LTAuMS0wLjEtMC4zLTAuMi0wLjQtMC4ycy0wLjMtMC4xLTAuNS0wLjJjLTAuMiwwLTAuMy0wLjEtMC41
-        LTAuMXMtMC4zLDAtMC41LDBjLTAuMiwwLTAuNCwwLTAuNSwwLjFjLTAuMiwwLTAuMywwLjEtMC40LDAu
-        MiAgYy0wLjEsMC4xLTAuMiwwLjEtMC4zLDAuMmMtMC4xLDAuMS0wLjEsMC4yLTAuMSwwLjNjMCwwLjEs
-        MCwwLjIsMC4xLDAuM2MwLjEsMC4xLDAuMiwwLjIsMC4zLDAuM2MwLjEsMC4xLDAuMywwLjIsMC41LDAu
-        MyAgczAuNCwwLjIsMC42LDAuM2MwLjMsMC4xLDAuNiwwLjMsMC44LDAuNGMwLjIsMC4xLDAuNSwwLjMs
-        MC42LDAuNWMwLjIsMC4yLDAuMywwLjQsMC40LDAuNnMwLjEsMC41LDAuMSwwLjggIEMyMi42LDE2LjMs
-        MjIuNSwxNi42LDIyLjQsMTYuOXogTTI4LjEsMThsLTEuMy0yLjVjLTAuMS0wLjEtMC4xLTAuMy0wLjIt
-        MC41aDBjMCwwLjEtMC4xLDAuMy0wLjIsMC41TDI1LjEsMThIMjNsMi41LTMuOWwtMi4yLTMuOSAgaDIu
-        MWwxLjEsMi4zYzAuMSwwLjIsMC4yLDAuNCwwLjIsMC43aDBjMC0wLjIsMC4xLTAuNCwwLjItMC43bDEu
-        Mi0yLjNoMS45bC0yLjMsMy44bDIuNCwzLjlIMjguMXoiIGNsYXNzPSJHcmVlbiIgLz4NCiAgPGcgY2xh
-        c3M9InN0MCI+DQogICAgPHBhdGggZD0iTTMxLDhIM0MyLjQsOCwyLDguNCwyLDl2MTBjMCwwLjYsMC40
-        LDEsMSwxaDI4YzAuNiwwLDEtMC40LDEtMVY5QzMyLDguNCwzMS42LDgsMzEsOHogTTkuMSwxOGwtMS4z
-        LTIuNSAgIGMtMC4xLTAuMS0wLjEtMC4zLTAuMi0wLjVoMGMwLDAuMS0wLjEsMC4zLTAuMiwwLjVMNi4x
-        LDE4SDRsMi41LTMuOWwtMi4yLTMuOWgyLjFsMS4xLDIuM2MwLjEsMC4yLDAuMiwwLjQsMC4yLDAuN2gw
-        ICAgYzAtMC4yLDAuMS0wLjQsMC4yLTAuN2wxLjItMi4zaDEuOWwtMi4zLDMuOGwyLjQsMy45SDkuMXog
-        TTE2LjcsMThoLTQuNnYtNy43aDEuN3Y2LjNoMi45VjE4eiBNMjIuNCwxNi45ICAgYy0wLjIsMC4zLTAu
-        NCwwLjUtMC43LDAuN3MtMC42LDAuMy0xLDAuNGMtMC40LDAuMS0wLjgsMC4xLTEuMiwwLjFjLTAuNCww
-        LTAuOCwwLTEuMi0wLjFjLTAuNC0wLjEtMC43LTAuMi0xLTAuM1YxNiAgIGMwLjMsMC4zLDAuNiwwLjUs
-        MSwwLjZzMC43LDAuMiwxLjEsMC4yYzAuMiwwLDAuNCwwLDAuNi0wLjFzMC4zLTAuMSwwLjQtMC4yYzAu
-        MS0wLjEsMC4yLTAuMiwwLjItMC4yYzAuMS0wLjEsMC4xLTAuMiwwLjEtMC4zICAgYzAtMC4yLDAtMC4z
-        LTAuMS0wLjRjLTAuMS0wLjEtMC4yLTAuMi0wLjQtMC4zUzIwLDE1LjEsMTkuOCwxNXMtMC40LTAuMi0w
-        LjctMC4zYy0wLjYtMC4zLTEuMS0wLjYtMS4zLTAuOSAgIGMtMC4zLTAuNC0wLjQtMC44LTAuNC0xLjNj
-        MC0wLjQsMC4xLTAuNywwLjItMWMwLjItMC4zLDAuNC0wLjUsMC43LTAuN2MwLjMtMC4yLDAuNi0wLjMs
-        MS0wLjRzMC44LTAuMSwxLjItMC4xICAgYzAuNCwwLDAuOCwwLDEuMSwwLjFjMC4zLDAsMC42LDAuMSww
-        LjksMC4ydjEuNmMtMC4xLTAuMS0wLjMtMC4yLTAuNC0wLjJzLTAuMy0wLjEtMC41LTAuMmMtMC4yLDAt
-        MC4zLTAuMS0wLjUtMC4xcy0wLjMsMC0wLjUsMCAgIGMtMC4yLDAtMC40LDAtMC41LDAuMWMtMC4yLDAt
-        MC4zLDAuMS0wLjQsMC4yYy0wLjEsMC4xLTAuMiwwLjEtMC4zLDAuMmMtMC4xLDAuMS0wLjEsMC4yLTAu
-        MSwwLjNjMCwwLjEsMCwwLjIsMC4xLDAuMyAgIGMwLjEsMC4xLDAuMiwwLjIsMC4zLDAuM2MwLjEsMC4x
-        LDAuMywwLjIsMC41LDAuM3MwLjQsMC4yLDAuNiwwLjNjMC4zLDAuMSwwLjYsMC4zLDAuOCwwLjRjMC4y
-        LDAuMSwwLjUsMC4zLDAuNiwwLjUgICBjMC4yLDAuMiwwLjMsMC40LDAuNCwwLjZzMC4xLDAuNSwwLjEs
-        MC44QzIyLjYsMTYuMywyMi41LDE2LjYsMjIuNCwxNi45eiBNMjguMSwxOGwtMS4zLTIuNWMtMC4xLTAu
-        MS0wLjEtMC4zLTAuMi0wLjVoMCAgIGMwLDAuMS0wLjEsMC4zLTAuMiwwLjVMMjUuMSwxOEgyM2wyLjUt
-        My45bC0yLjItMy45aDIuMWwxLjEsMi4zYzAuMSwwLjIsMC4yLDAuNCwwLjIsMC43aDBjMC0wLjIsMC4x
-        LTAuNCwwLjItMC43bDEuMi0yLjNoMS45ICAgbC0yLjMsMy44bDIuNCwzLjlIMjguMXoiIGNsYXNzPSJC
-        bHVlIiAvPg0KICA8L2c+DQo8L3N2Zz4L
-</value>
-  </data>
-  <data name="btnSave.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
-    <value>
-        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
-        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
-        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAO4BAAAC77u/
-        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
-        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
-        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
-        Y2U9InByZXNlcnZlIiBpZD0iU2F2ZSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgMzIg
-        MzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9Cjwvc3R5
-        bGU+DQogIDxwYXRoIGQ9Ik0yNyw0aC0zdjEwSDhWNEg1QzQuNCw0LDQsNC40LDQsNXYyMmMwLDAuNiww
-        LjQsMSwxLDFoMjJjMC42LDAsMS0wLjQsMS0xVjVDMjgsNC40LDI3LjYsNCwyNyw0eiBNMjQsMjRIOHYt
-        NiAgaDE2VjI0eiBNMTAsNHY4aDEwVjRIMTB6IE0xNCwxMGgtMlY2aDJWMTB6IiBjbGFzcz0iQmxhY2si
-        IC8+DQo8L3N2Zz4L
-</value>
-  </data>
-  <metadata name="hydroCurvePointViewModelBindingSource.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
-    <value>17, 17</value>
-  </metadata>
-  <data name="editorButtonImageOptions2.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
-    <value>
-        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
-        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
-        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAD0DAAAC77u/
-        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
-        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
-        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
-        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
-        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLlJlZHtmaWxsOiNEMTFDMUM7fQoJLkJs
-        YWNre2ZpbGw6IzcyNzI3Mjt9CgkuQmx1ZXtmaWxsOiMxMTc3RDc7fQoJLkdyZWVue2ZpbGw6IzAzOUMy
-        Mzt9CgkuWWVsbG93e2ZpbGw6I0ZGQjExNTt9CgkuV2hpdGV7ZmlsbDojRkZGRkZGO30KCS5zdDB7b3Bh
-        Y2l0eTowLjU7fQoJLnN0MXtvcGFjaXR5OjAuNzU7fQo8L3N0eWxlPg0KICA8ZyBpZD0iRGVsZXRlIj4N
-        CiAgICA8Zz4NCiAgICAgIDxwYXRoIGQ9Ik0xOC44LDE2bDYuOS02LjljMC40LTAuNCwwLjQtMSwwLTEu
-        NGwtMS40LTEuNGMtMC40LTAuNC0xLTAuNC0xLjQsMEwxNiwxMy4yTDkuMSw2LjNjLTAuNC0wLjQtMS0w
-        LjQtMS40LDAgICAgTDYuMyw3LjdjLTAuNCwwLjQtMC40LDEsMCwxLjRsNi45LDYuOWwtNi45LDYuOWMt
-        MC40LDAuNC0wLjQsMSwwLDEuNGwxLjQsMS40YzAuNCwwLjQsMSwwLjQsMS40LDBsNi45LTYuOWw2Ljks
-        Ni45ICAgIGMwLjQsMC40LDEsMC40LDEuNCwwbDEuNC0xLjRjMC40LTAuNCwwLjQtMSwwLTEuNEwxOC44
-        LDE2eiIgY2xhc3M9IlJlZCIgLz4NCiAgICA8L2c+DQogIDwvZz4NCjwvc3ZnPgs=
-</value>
-  </data>
-</root>
\ No newline at end of file
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/07-curve/02-set/SetHydroCurveDlg.Designer.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/07-curve/02-set/SetHydroCurveDlg.Designer.cs
deleted file mode 100644
index d51b6ff..0000000
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/07-curve/02-set/SetHydroCurveDlg.Designer.cs
+++ /dev/null
@@ -1,164 +0,0 @@
-锘縩amespace Yw.WinFrmUI
-{
-    partial class SetHydroCurveDlg
-    {
-        /// <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();
-            Root = new DevExpress.XtraLayout.LayoutControlGroup();
-            setHydroCurveCtrl1 = new SetHydroCurveCtrl();
-            layoutControlItem1 = new DevExpress.XtraLayout.LayoutControlItem();
-            generalOkAndCancelCtrl1 = new GeneralOkAndCancelCtrl();
-            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(990, 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(setHydroCurveCtrl1);
-            layoutControl1.Dock = DockStyle.Fill;
-            layoutControl1.Location = new Point(0, 32);
-            layoutControl1.Name = "layoutControl1";
-            layoutControl1.Root = Root;
-            layoutControl1.Size = new Size(990, 651);
-            layoutControl1.TabIndex = 6;
-            layoutControl1.Text = "layoutControl1";
-            // 
-            // 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(990, 651);
-            Root.TextVisible = false;
-            // 
-            // setHydroCurveCtrl1
-            // 
-            setHydroCurveCtrl1.Location = new Point(2, 2);
-            setHydroCurveCtrl1.Name = "setHydroCurveCtrl1";
-            setHydroCurveCtrl1.Size = new Size(986, 617);
-            setHydroCurveCtrl1.TabIndex = 4;
-            // 
-            // layoutControlItem1
-            // 
-            layoutControlItem1.Control = setHydroCurveCtrl1;
-            layoutControlItem1.Location = new Point(0, 0);
-            layoutControlItem1.Name = "layoutControlItem1";
-            layoutControlItem1.Size = new Size(990, 621);
-            layoutControlItem1.TextSize = new Size(0, 0);
-            layoutControlItem1.TextVisible = false;
-            // 
-            // 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, 623);
-            generalOkAndCancelCtrl1.Name = "generalOkAndCancelCtrl1";
-            generalOkAndCancelCtrl1.Size = new Size(986, 26);
-            generalOkAndCancelCtrl1.TabIndex = 5;
-            // 
-            // layoutControlItem2
-            // 
-            layoutControlItem2.Control = generalOkAndCancelCtrl1;
-            layoutControlItem2.Location = new Point(0, 621);
-            layoutControlItem2.Name = "layoutControlItem2";
-            layoutControlItem2.Size = new Size(990, 30);
-            layoutControlItem2.TextSize = new Size(0, 0);
-            layoutControlItem2.TextVisible = false;
-            // 
-            // SetHydroCurveDlg
-            // 
-            AutoScaleDimensions = new SizeF(7F, 14F);
-            AutoScaleMode = AutoScaleMode.Font;
-            ClientSize = new Size(990, 683);
-            Controls.Add(layoutControl1);
-            Controls.Add(ribbon);
-            FormBorderStyle = FormBorderStyle.SizableToolWindow;
-            Name = "SetHydroCurveDlg";
-            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 GeneralOkAndCancelCtrl generalOkAndCancelCtrl1;
-        private SetHydroCurveCtrl setHydroCurveCtrl1;
-        private DevExpress.XtraLayout.LayoutControlGroup Root;
-        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem1;
-        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem2;
-    }
-}
\ No newline at end of file
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/07-curve/02-set/SetHydroCurveDlg.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/07-curve/02-set/SetHydroCurveDlg.cs
deleted file mode 100644
index 9b18f67..0000000
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/07-curve/02-set/SetHydroCurveDlg.cs
+++ /dev/null
@@ -1,50 +0,0 @@
-锘縩amespace Yw.WinFrmUI
-{
-    public partial class SetHydroCurveDlg : DevExpress.XtraBars.Ribbon.RibbonForm
-    {
-        public SetHydroCurveDlg()
-        {
-            InitializeComponent();
-            this.IconOptions.Icon = Yw.WinFrmUI.GlobalParas.AppIcon;
-            this.layoutControl1.SetupLayoutControl();
-            this.setHydroCurveCtrl1.SaveCurveInfoEvent += SetHydroCurveCtrl1_SaveCurveInfoEvent;
-            this.generalOkAndCancelCtrl1.OkEvent += GeneralOkAndCancelCtrl1_OkEvent;
-        }
-
-        /// <summary>
-        /// 閲嶈浇鏁版嵁浜嬩欢
-        /// </summary>
-        public event Action<Yw.Model.HydroCurveInfo> ReloadDataEvent;
-
-        //鏇茬嚎
-        private Yw.Model.HydroCurveInfo _curve;
-
-        /// <summary>
-        /// 缁戝畾鏁版嵁
-        /// </summary>
-        public void SetBindingData(Yw.Model.HydroModelInfo hydroInfo, Yw.Model.HydroCurveInfo curveInfo, string curve, string curveType)
-        {
-            this.setHydroCurveCtrl1.SetBindingData(hydroInfo, curveInfo, curve, curveType);
-        }
-
-        //淇濆瓨
-        private void SetHydroCurveCtrl1_SaveCurveInfoEvent(Model.HydroCurveInfo obj)
-        {
-            _curve = obj;
-        }
-
-        //纭畾
-        private void GeneralOkAndCancelCtrl1_OkEvent()
-        {
-            if (_curve == null)
-            {
-                return;
-            }
-            this.ReloadDataEvent?.Invoke(_curve);
-            this.DialogResult = DialogResult.OK;
-            this.Close();
-        }
-
-
-    }
-}
\ No newline at end of file
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/07-curve/02-set/SetHydroCurveDlg.resx b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/07-curve/02-set/SetHydroCurveDlg.resx
deleted file mode 100644
index af32865..0000000
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/07-curve/02-set/SetHydroCurveDlg.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/04-viewmodel/07-curve/00-core/HydroCurvePointViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/07-curve/HydroCurvePointViewModel.cs
similarity index 100%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/07-curve/00-core/HydroCurvePointViewModel.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/07-curve/HydroCurvePointViewModel.cs
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/05-property/HydroVisualPropertyCtrl.Designer.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/05-property/HydroVisualPropertyCtrl.Designer.cs
index 55768eb..ca25325 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/05-property/HydroVisualPropertyCtrl.Designer.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/05-property/HydroVisualPropertyCtrl.Designer.cs
@@ -29,16 +29,16 @@
         private void InitializeComponent()
         {
             components = new Container();
+            DevExpress.Utils.SuperToolTip superToolTip8 = new DevExpress.Utils.SuperToolTip();
+            DevExpress.Utils.ToolTipItem toolTipItem8 = new DevExpress.Utils.ToolTipItem();
+            DevExpress.Utils.SuperToolTip superToolTip6 = new DevExpress.Utils.SuperToolTip();
+            DevExpress.Utils.ToolTipItem toolTipItem6 = new DevExpress.Utils.ToolTipItem();
+            DevExpress.Utils.SuperToolTip superToolTip7 = new DevExpress.Utils.SuperToolTip();
+            DevExpress.Utils.ToolTipItem toolTipItem7 = new DevExpress.Utils.ToolTipItem();
             ComponentResourceManager resources = new ComponentResourceManager(typeof(HydroVisualPropertyCtrl));
-            DevExpress.Utils.SuperToolTip superToolTip1 = new DevExpress.Utils.SuperToolTip();
-            DevExpress.Utils.ToolTipItem toolTipItem1 = new DevExpress.Utils.ToolTipItem();
-            DevExpress.Utils.SuperToolTip superToolTip2 = new DevExpress.Utils.SuperToolTip();
-            DevExpress.Utils.ToolTipItem toolTipItem2 = new DevExpress.Utils.ToolTipItem();
-            DevExpress.Utils.SuperToolTip superToolTip3 = new DevExpress.Utils.SuperToolTip();
-            DevExpress.Utils.ToolTipItem toolTipItem3 = new DevExpress.Utils.ToolTipItem();
-            DevExpress.Utils.SuperToolTip superToolTip4 = new DevExpress.Utils.SuperToolTip();
-            DevExpress.Utils.ToolTipTitleItem toolTipTitleItem1 = new DevExpress.Utils.ToolTipTitleItem();
-            DevExpress.Utils.ToolTipItem toolTipItem4 = new DevExpress.Utils.ToolTipItem();
+            DevExpress.Utils.SuperToolTip superToolTip5 = new DevExpress.Utils.SuperToolTip();
+            DevExpress.Utils.ToolTipTitleItem toolTipTitleItem2 = new DevExpress.Utils.ToolTipTitleItem();
+            DevExpress.Utils.ToolTipItem toolTipItem5 = new DevExpress.Utils.ToolTipItem();
             layoutControl1 = new DevExpress.XtraLayout.LayoutControl();
             hydroVisualPropertyDescriptionCtrl1 = new HydroVisualPropertyDescriptionCtrl();
             propertyGridControl1 = new DevExpress.XtraVerticalGrid.PropertyGridControl();
@@ -51,7 +51,7 @@
             bar1 = new DevExpress.XtraBars.Bar();
             barBtnExpandAll = new DevExpress.XtraBars.BarButtonItem();
             barBtnCollpseAll = new DevExpress.XtraBars.BarButtonItem();
-            barBtnDb = new DevExpress.XtraBars.BarButtonItem();
+            barBtnMatchingDb = new DevExpress.XtraBars.BarButtonItem();
             barBtnChangeLink = new DevExpress.XtraBars.BarButtonItem();
             barBtnView = new DevExpress.XtraBars.BarButtonItem();
             barBtnHelp = new DevExpress.XtraBars.BarButtonItem();
@@ -165,7 +165,7 @@
             barManager1.DockControls.Add(barDockControlLeft);
             barManager1.DockControls.Add(barDockControlRight);
             barManager1.Form = this;
-            barManager1.Items.AddRange(new DevExpress.XtraBars.BarItem[] { barBtnHelp, barBtnExpandAll, barBtnCollpseAll, barBtnChangeLink, barBtnView, barBtnDb });
+            barManager1.Items.AddRange(new DevExpress.XtraBars.BarItem[] { barBtnHelp, barBtnExpandAll, barBtnCollpseAll, barBtnChangeLink, barBtnView, barBtnMatchingDb });
             barManager1.MaxItemId = 19;
             // 
             // bar1
@@ -180,7 +180,7 @@
             bar1.DockRow = 0;
             bar1.DockStyle = DevExpress.XtraBars.BarDockStyle.Top;
             bar1.FloatLocation = new Point(1899, 679);
-            bar1.LinksPersistInfo.AddRange(new DevExpress.XtraBars.LinkPersistInfo[] { new DevExpress.XtraBars.LinkPersistInfo(barBtnExpandAll), new DevExpress.XtraBars.LinkPersistInfo(barBtnCollpseAll), new DevExpress.XtraBars.LinkPersistInfo(barBtnDb), new DevExpress.XtraBars.LinkPersistInfo(barBtnChangeLink), new DevExpress.XtraBars.LinkPersistInfo(barBtnView), new DevExpress.XtraBars.LinkPersistInfo(barBtnHelp) });
+            bar1.LinksPersistInfo.AddRange(new DevExpress.XtraBars.LinkPersistInfo[] { new DevExpress.XtraBars.LinkPersistInfo(barBtnExpandAll), new DevExpress.XtraBars.LinkPersistInfo(barBtnCollpseAll), new DevExpress.XtraBars.LinkPersistInfo(barBtnMatchingDb), new DevExpress.XtraBars.LinkPersistInfo(barBtnChangeLink), new DevExpress.XtraBars.LinkPersistInfo(barBtnView), new DevExpress.XtraBars.LinkPersistInfo(barBtnHelp) });
             bar1.OptionsBar.AllowQuickCustomization = false;
             bar1.OptionsBar.DrawBorder = false;
             bar1.OptionsBar.RotateWhenVertical = false;
@@ -205,25 +205,25 @@
             barBtnCollpseAll.Name = "barBtnCollpseAll";
             barBtnCollpseAll.ItemClick += barBtnCollpseAll_ItemClick;
             // 
-            // barBtnDb
+            // barBtnMatchingDb
             // 
-            barBtnDb.Caption = "閫夋嫨";
-            barBtnDb.Id = 18;
-            barBtnDb.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barBtnDb.ImageOptions.SvgImage");
-            barBtnDb.Name = "barBtnDb";
-            toolTipItem1.Text = "浠庝骇鍝佸簱涓繘琛岄�夋嫨";
-            superToolTip1.Items.Add(toolTipItem1);
-            barBtnDb.SuperTip = superToolTip1;
-            barBtnDb.ItemClick += barBtnDb_ItemClick;
+            barBtnMatchingDb.Caption = "閫夋嫨";
+            barBtnMatchingDb.Id = 18;
+            barBtnMatchingDb.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barBtnDb.ImageOptions.SvgImage");
+            barBtnMatchingDb.Name = "barBtnMatchingDb";
+            toolTipItem8.Text = "浠庝骇鍝佸簱涓繘琛岄�夋嫨";
+            superToolTip8.Items.Add(toolTipItem8);
+            barBtnMatchingDb.SuperTip = superToolTip8;
+            barBtnMatchingDb.ItemClick += barBtnMatchingDb_ItemClick;
             // 
             // barBtnChangeLink
             // 
             barBtnChangeLink.Id = 16;
             barBtnChangeLink.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barBtnChangeLink.ImageOptions.SvgImage");
             barBtnChangeLink.Name = "barBtnChangeLink";
-            toolTipItem2.Text = "璋冩暣涓婁笅娓�";
-            superToolTip2.Items.Add(toolTipItem2);
-            barBtnChangeLink.SuperTip = superToolTip2;
+            toolTipItem6.Text = "璋冩暣涓婁笅娓�";
+            superToolTip6.Items.Add(toolTipItem6);
+            barBtnChangeLink.SuperTip = superToolTip6;
             barBtnChangeLink.Visibility = DevExpress.XtraBars.BarItemVisibility.Never;
             barBtnChangeLink.ItemClick += barBtnChangeLink_ItemClick;
             // 
@@ -232,9 +232,9 @@
             barBtnView.Id = 17;
             barBtnView.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barBtnView.ImageOptions.SvgImage");
             barBtnView.Name = "barBtnView";
-            toolTipItem3.Text = "鏌ョ湅";
-            superToolTip3.Items.Add(toolTipItem3);
-            barBtnView.SuperTip = superToolTip3;
+            toolTipItem7.Text = "鏌ョ湅";
+            superToolTip7.Items.Add(toolTipItem7);
+            barBtnView.SuperTip = superToolTip7;
             barBtnView.Visibility = DevExpress.XtraBars.BarItemVisibility.Never;
             barBtnView.ItemClick += barBtnView_ItemClick;
             // 
@@ -245,14 +245,14 @@
             barBtnHelp.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barBtnHelp.ImageOptions.SvgImage");
             barBtnHelp.ImageOptions.SvgImageSize = new Size(20, 20);
             barBtnHelp.Name = "barBtnHelp";
-            toolTipTitleItem1.Appearance.Image = (Image)resources.GetObject("resource.Image");
-            toolTipTitleItem1.Appearance.Options.UseImage = true;
-            toolTipTitleItem1.ImageOptions.Image = (Image)resources.GetObject("resource.Image1");
-            toolTipItem4.LeftIndent = 6;
-            toolTipItem4.Text = "鎻忚堪淇℃伅";
-            superToolTip4.Items.Add(toolTipTitleItem1);
-            superToolTip4.Items.Add(toolTipItem4);
-            barBtnHelp.SuperTip = superToolTip4;
+            toolTipTitleItem2.Appearance.Image = (Image)resources.GetObject("resource.Image");
+            toolTipTitleItem2.Appearance.Options.UseImage = true;
+            toolTipTitleItem2.ImageOptions.Image = (Image)resources.GetObject("resource.Image1");
+            toolTipItem5.LeftIndent = 6;
+            toolTipItem5.Text = "鎻忚堪淇℃伅";
+            superToolTip5.Items.Add(toolTipTitleItem2);
+            superToolTip5.Items.Add(toolTipItem5);
+            barBtnHelp.SuperTip = superToolTip5;
             barBtnHelp.ItemClick += barBtnHelp_ItemClick;
             // 
             // barDockControlTop
@@ -332,6 +332,6 @@
         private HydroVisualPropertyDescriptionCtrl hydroVisualPropertyDescriptionCtrl1;
         private DevExpress.XtraLayout.LayoutControlItem layoutDescription;
         private DevExpress.Utils.SvgImageCollection svgImg16;
-        private DevExpress.XtraBars.BarButtonItem barBtnDb;
+        private DevExpress.XtraBars.BarButtonItem barBtnMatchingDb;
     }
 }
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/05-property/HydroVisualPropertyCtrl.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/05-property/HydroVisualPropertyCtrl.cs
index 6aaab03..a490c8a 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/05-property/HydroVisualPropertyCtrl.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/05-property/HydroVisualPropertyCtrl.cs
@@ -21,50 +21,37 @@
         /// <summary>
         /// 鍖归厤db浜嬩欢
         /// 绗竴涓弬鏁颁负鍖归厤Db鐨刅iewModel
-        /// 绗簩涓弬鏁颁负鏄惁鍖归厤鎴愬姛
         /// </summary>
-        public event Func<HydroVisualViewModel, bool> MatchingDbEvent;
+        public event Action<HydroVisualViewModel> MatchingDbEvent;
         /// <summary>
         /// 璁剧疆鏇茬嚎浜嬩欢
         /// 绗竴涓弬鏁颁负璁剧疆鏇茬嚎鐨刅iewModel
-        /// 绗簩涓弬鏁颁负鏇茬嚎绫诲瀷
-        /// 绗笁涓弬鏁颁负鏄惁璁剧疆鎴愬姛
+        /// 绗簩涓弬鏁颁负鏇茬嚎 (HydroCurve)
+        /// 绗笁涓弬鏁颁负鏇茬嚎绫诲瀷锛圚ydroCurveType锛�
         /// </summary>
-        public event Func<HydroVisualViewModel, string, string, bool> SetCurveEvent;
-        /// <summary>
-        /// 璁剧疆妯″紡浜嬩欢
-        /// 绗竴涓弬鏁颁负璁剧疆妯″紡浜嬬殑ViewModel
-        /// 绗簩涓弬鏁颁负妯″紡浜嬬被鍨�
-        /// 绗笁涓弬鏁颁负鏄惁璁剧疆鎴愬姛
-        /// </summary>
-        public event Func<HydroVisualViewModel, string, bool> SetPatternEvent;
+        public event Action<HydroVisualViewModel, string, string> SetCurveEvent;
         /// <summary>
         /// 灞炴�у�煎彂鐢熸敼鍙樹簨浠�
         /// </summary>
         public event Action<HydroVisualViewModel> PropertyValueChangedEvent;
-
         /// <summary>
         /// 鏍囨敞灞炴�у�兼敼鍙樹簨浠�
         /// </summary>
         public event Action<HydroVisualViewModel> MarkPropertyValueChangedEvent;
-
         /// <summary>
         /// 鍒嗙骇灞炴�у�兼敼鍙樹簨浠�
         /// </summary>
         public event Action<HydroVisualViewModel> GradingPropertyValueChangedEvent;
-
         /// <summary>
         /// 姘存祦鍔ㄧ敾灞炴�у�兼敼鍙樹簨浠�
         /// </summary>
         public event Action<HydroVisualViewModel> FlowEffectPropertyValueChangedEvent;
-
         /// <summary>
         /// 寮鸿皟杩炴帴鑺傜偣浜嬩欢
         /// 绗竴涓弬鏁颁负鏈韩Code
         /// 绗簩涓弬鏁颁负杩炴帴鑺傜偣Code
         /// </summary>
         public event Action<HydroLinkViewModel, string> BlinkLinkNodeEvent;
-
         /// <summary>
         /// 鏌ョ湅鏋勪欢浜嬩欢
         /// </summary>
@@ -84,17 +71,17 @@
             set
             {
                 this.barBtnChangeLink.Visibility = value is HydroLinkViewModel ? BarItemVisibility.Always : BarItemVisibility.Never;
-                this.barBtnDb.Visibility = value == null ? BarItemVisibility.Never : BarItemVisibility.Always;
+                this.barBtnMatchingDb.Visibility = value == null ? BarItemVisibility.Never : BarItemVisibility.Always;
                 this.barBtnView.Visibility = value == null ? BarItemVisibility.Never : BarItemVisibility.Always;
                 if (value != null)
                 {
                     if (value is HydroReservoirViewModel)
                     {
-                        this.barBtnDb.Visibility = BarItemVisibility.Never;
+                        this.barBtnMatchingDb.Visibility = BarItemVisibility.Never;
                     }
                     else if (value is HydroJunctionViewModel)
                     {
-                        this.barBtnDb.Visibility = BarItemVisibility.Never;
+                        this.barBtnMatchingDb.Visibility = BarItemVisibility.Never;
                     }
                 }
                 this.propertyGridControl1.SelectedObject = value;
@@ -339,35 +326,6 @@
 
             #endregion
 
-            #region 鍨嬪彿
-
-            var modelTypeAttri = (HydroModelTypeProAttribute)descriptor.Attributes[typeof(HydroModelTypeProAttribute)];
-            if (modelTypeAttri != null)
-            {
-                var buttonEdit = new RepositoryItemButtonEdit();
-                buttonEdit.TextEditStyle = TextEditStyles.DisableTextEditor;
-                buttonEdit.ButtonClick += delegate
-                {
-                    if (this.MatchingDbEvent == null)
-                    {
-                        return;
-                    }
-                    var vm = GetPropertyViewModel(e.Row);
-                    if (vm == null)
-                    {
-                        return;
-                    }
-                    var bol = this.MatchingDbEvent.Invoke(vm);
-                    if (bol)
-                    {
-                        UpdateRows();
-                    }
-                };
-                e.RepositoryItem = buttonEdit;
-            }
-
-            #endregion
-
             #region 鏇茬嚎
 
             var curvePropAttri = (HydroCurveProAttribute)descriptor.Attributes[typeof(HydroCurveProAttribute)];
@@ -382,29 +340,7 @@
                     {
                         return;
                     }
-                    if (this.SetCurveEvent == null || !this.SetCurveEvent.Invoke(vm, curvePropAttri.Curve, curvePropAttri.CurveType))
-                    {
-                        var curveCode = e.Row.Properties.Value?.ToString();
-                        var curveInfo = vm.HydroInfo.Curves?.Find(x => x.Code == curveCode);
-                        var dlg = new SetHydroCurveDlg();
-                        dlg.SetBindingData(vm.HydroInfo, curveInfo, curvePropAttri.Curve, curvePropAttri.CurveType);
-                        dlg.ReloadDataEvent += (curveInfoRhs) =>
-                        {
-                            if (vm.HydroInfo.Curves == null)
-                            {
-                                vm.HydroInfo.Curves = new List<Model.HydroCurveInfo>();
-                            }
-                            if (curveInfo != null)
-                            {
-                                vm.HydroInfo.Curves.Remove(curveInfo);
-                            }
-                            vm.HydroInfo.Curves.Add(curveInfo);
-                            e.Row.Properties.Value = curveInfo.Code;
-                            vm.UpdateVmoProperty();
-                            UpdateRows();
-                        };
-                        dlg.ShowDialog();
-                    }
+                    this.SetCurveEvent?.Invoke(vm, curvePropAttri.Curve, curvePropAttri.CurveType);
                 };
                 e.RepositoryItem = buttonEdit;
             }
@@ -420,26 +356,7 @@
                 buttonEdit.TextEditStyle = TextEditStyles.DisableTextEditor;
                 buttonEdit.ButtonClick += delegate
                 {
-                    var vm = GetPropertyViewModel(e.Row);
-                    switch (patternProAttri.PatternType)
-                    {
-                        case HydroPattern.Head:
-                            {
-                                if (this.SetPatternEvent == null || !this.SetPatternEvent.Invoke(vm, HydroPattern.Head))
-                                {
-                                    //缂虹渷鐨勮缃柟娉�
-                                }
-                            }
-                            break;
-                        case HydroPattern.Demand:
-                            {
-                                if (this.SetPatternEvent == null || !this.SetPatternEvent.Invoke(vm, HydroPattern.Demand))
-                                {
-                                    //缂虹渷鐨勮缃柟娉�
-                                }
-                            }
-                            break;
-                    }
+
                 };
                 e.RepositoryItem = buttonEdit;
             }
@@ -694,18 +611,15 @@
             }
         }
 
-        //閫夋嫨
-        private void barBtnDb_ItemClick(object sender, ItemClickEventArgs e)
+        //Db鍖归厤
+        private void barBtnMatchingDb_ItemClick(object sender, ItemClickEventArgs e)
         {
             var vm = this.SelectedObject;
             if (vm == null)
             {
                 return;
             }
-            if (this.MatchingDbEvent != null)
-            {
-
-            }
+            this.MatchingDbEvent?.Invoke(vm);
         }
 
         //鏀瑰彉杩炴帴鑺傜偣
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/05-property/HydroVisualPropertyCtrl.resx b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/05-property/HydroVisualPropertyCtrl.resx
index 016afd0..167f13a 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/05-property/HydroVisualPropertyCtrl.resx
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/05-property/HydroVisualPropertyCtrl.resx
@@ -120,98 +120,13 @@
   <metadata name="svgImg16.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
     <value>17, 17</value>
   </metadata>
+  <metadata name="svgImg16.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>17, 17</value>
+  </metadata>
   <metadata name="barManager1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
     <value>151, 19</value>
   </metadata>
   <assembly alias="DevExpress.Data.v23.2" name="DevExpress.Data.v23.2, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
-  <data name="barBtnExpandAll.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
-    <value>
-        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
-        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
-        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAALACAAAC77u/
-        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
-        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
-        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
-        Y2U9InByZXNlcnZlIiBpZD0iRXhwYW5kX0ZpZWxkIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3
-        IDAgMCAzMiAzMiI+DQogIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CgkuQmxhY2t7ZmlsbDojNzI3Mjcy
-        O30KCS5HcmVlbntmaWxsOiMwMzlDMjM7fQoJLnN0MHtvcGFjaXR5OjAuNzU7fQo8L3N0eWxlPg0KICA8
-        cG9seWdvbiBwb2ludHM9IjE0LDYgMTAsNiAxMCwyIDYsMiA2LDYgMiw2IDIsMTAgNiwxMCA2LDE0IDEw
-        LDE0IDEwLDEwIDE0LDEwICIgY2xhc3M9IkdyZWVuIiAvPg0KICA8ZyBjbGFzcz0ic3QwIj4NCiAgICA8
-        cGF0aCBkPSJNMjIsNmgxMHYySDIyVjZ6IE0yMiwxMmgxMHYtMkgyMlYxMnogTTIyLDIwaDEwdi0ySDIy
-        VjIweiBNMjIsMjRoMTB2LTJIMjJWMjR6IiBjbGFzcz0iQmxhY2siIC8+DQogIDwvZz4NCiAgPHBhdGgg
-        ZD0iTTE4LDJoMTR2MkgxOFYyeiBNMTgsMTZoMTR2LTJIMThWMTZ6IE0xOCwyOGgxNHYtMkgxOFYyOHoi
-        IGNsYXNzPSJCbGFjayIgLz4NCjwvc3ZnPgs=
-</value>
-  </data>
-  <data name="barBtnCollpseAll.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
-    <value>
-        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
-        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
-        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAIcCAAAC77u/
-        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
-        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
-        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
-        Y2U9InByZXNlcnZlIiBpZD0iQ29sbGFwc2VfRmllbGQiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpu
-        ZXcgMCAwIDMyIDMyIj4NCiAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5CbGFja3tmaWxsOiM3Mjcy
-        NzI7fQoJLlJlZHtmaWxsOiNEMTFDMUM7fQoJLnN0MHtvcGFjaXR5OjAuNzU7fQo8L3N0eWxlPg0KICA8
-        cmVjdCB4PSIyIiB5PSI2IiB3aWR0aD0iMTIiIGhlaWdodD0iNCIgY2xhc3M9IlJlZCIgLz4NCiAgPGcg
-        Y2xhc3M9InN0MCI+DQogICAgPHBhdGggZD0iTTIyLDZoMTB2MkgyMlY2eiBNMjIsMTJoMTB2LTJIMjJW
-        MTJ6IE0yMiwyMGgxMHYtMkgyMlYyMHogTTIyLDI0aDEwdi0ySDIyVjI0eiIgY2xhc3M9IkJsYWNrIiAv
-        Pg0KICA8L2c+DQogIDxwYXRoIGQ9Ik0xOCwyaDE0djJIMThWMnogTTE4LDE2aDE0di0ySDE4VjE2eiBN
-        MTgsMjhoMTR2LTJIMThWMjh6IiBjbGFzcz0iQmxhY2siIC8+DQo8L3N2Zz4L
-</value>
-  </data>
-  <data name="barBtnDb.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
-    <value>
-        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
-        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
-        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAMACAAAC77u/
-        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
-        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
-        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
-        Y2U9InByZXNlcnZlIiBpZD0iU2VsZWN0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAz
-        MiAzMiI+DQogIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CgkuQmxhY2t7ZmlsbDojNzI3MjcyO30KCS5C
-        bHVle2ZpbGw6IzExNzdENzt9Cgkuc3Qwe29wYWNpdHk6MC41O30KPC9zdHlsZT4NCiAgPGcgY2xhc3M9
-        InN0MCI+DQogICAgPHBhdGggZD0iTTEwLDEwSDZWNmg0VjEweiBNMjQsNkgxMnY0aDEyVjZ6IE0xMCwx
-        Mkg2djEyaDRWMTJ6IiBjbGFzcz0iQmx1ZSIgLz4NCiAgPC9nPg0KICA8cGF0aCBkPSJNMTYsMjhoLTEu
-        OEgxMkgzYy0wLjYsMC0xLTAuNC0xLTFWM2MwLTAuNiwwLjQtMSwxLTFoMjRjMC42LDAsMSwwLjQsMSwx
-        djl2Mi4ydjYuOWwtMi0ydi01VjEyVjRINHYyMmg4aDIuMSAgSDE2VjI4eiBNMjQuMiwyNkgzMEwxOCwx
-        NHYxNi41bDQtNGwyLDVjMC4yLDAuNCwwLjYsMC42LDEsMC40bDAuNy0wLjNjMC40LTAuMiwwLjYtMC42
-        LDAuNC0xTDI0LjIsMjZ6IiBjbGFzcz0iQmxhY2siIC8+DQo8L3N2Zz4L
-</value>
-  </data>
-  <data name="barBtnChangeLink.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
-    <value>
-        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
-        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
-        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAK0BAAAC77u/
-        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
-        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
-        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBlbmFibGUt
-        YmFja2dyb3VuZD0ibmV3IDAgMCAzMiAzMiIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIgaWQ9IkxheWVyXzEi
-        Pg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkdyZWVue2ZpbGw6IzAzOUMyMzt9Cjwvc3R5bGU+
-        DQogIDxwb2x5Z29uIHBvaW50cz0iMzAsMjIgMjIsMTYgMjIsMjAgMTIsMjAgMjgsNCAyMiw0IDIsNCAy
-        LDggMTgsOCAyLDI0IDIyLDI0IDIyLDI4ICIgZmlsbD0iIzAzOUMyMyIgY2xhc3M9IkdyZWVuIiAvPg0K
-        PC9zdmc+Cw==
-</value>
-  </data>
-  <data name="barBtnView.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
-    <value>
-        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
-        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
-        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAADUCAAAC77u/
-        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
-        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
-        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
-        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
-        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkJsdWV7ZmlsbDojMTE3N0Q3O30KCS5Z
-        ZWxsb3d7ZmlsbDojRkZCMTE1O30KCS5CbGFja3tmaWxsOiM3MjcyNzI7fQoJLkdyZWVue2ZpbGw6IzAz
-        OUMyMzt9CgkuUmVke2ZpbGw6I0QxMUMxQzt9Cgkuc3Qwe29wYWNpdHk6MC43NTt9Cgkuc3Qxe29wYWNp
-        dHk6MC41O30KPC9zdHlsZT4NCiAgPGcgaWQ9IlNlbmQiPg0KICAgIDxwb2x5Z29uIHBvaW50cz0iMiwy
-        MCA4LDIyLjQgMjQsMTAgMTIsMjQgMTIsMzAgMTYuMywyNS43IDIyLDI4IDMwLDIgICIgY2xhc3M9IkJs
-        dWUiIC8+DQogIDwvZz4NCjwvc3ZnPgs=
-</value>
-  </data>
   <data name="barBtnHelp.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
         AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
@@ -268,4 +183,92 @@
         6XTsLy5SM69xQkG9AAAAAElFTkSuQmCC
 </value>
   </data>
+  <data name="barBtnExpandAll.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
+        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAALACAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
+        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
+        Y2U9InByZXNlcnZlIiBpZD0iRXhwYW5kX0ZpZWxkIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3
+        IDAgMCAzMiAzMiI+DQogIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CgkuQmxhY2t7ZmlsbDojNzI3Mjcy
+        O30KCS5HcmVlbntmaWxsOiMwMzlDMjM7fQoJLnN0MHtvcGFjaXR5OjAuNzU7fQo8L3N0eWxlPg0KICA8
+        cG9seWdvbiBwb2ludHM9IjE0LDYgMTAsNiAxMCwyIDYsMiA2LDYgMiw2IDIsMTAgNiwxMCA2LDE0IDEw
+        LDE0IDEwLDEwIDE0LDEwICIgY2xhc3M9IkdyZWVuIiAvPg0KICA8ZyBjbGFzcz0ic3QwIj4NCiAgICA8
+        cGF0aCBkPSJNMjIsNmgxMHYySDIyVjZ6IE0yMiwxMmgxMHYtMkgyMlYxMnogTTIyLDIwaDEwdi0ySDIy
+        VjIweiBNMjIsMjRoMTB2LTJIMjJWMjR6IiBjbGFzcz0iQmxhY2siIC8+DQogIDwvZz4NCiAgPHBhdGgg
+        ZD0iTTE4LDJoMTR2MkgxOFYyeiBNMTgsMTZoMTR2LTJIMThWMTZ6IE0xOCwyOGgxNHYtMkgxOFYyOHoi
+        IGNsYXNzPSJCbGFjayIgLz4NCjwvc3ZnPgs=
+</value>
+  </data>
+  <data name="barBtnCollpseAll.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
+        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAIcCAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
+        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
+        Y2U9InByZXNlcnZlIiBpZD0iQ29sbGFwc2VfRmllbGQiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpu
+        ZXcgMCAwIDMyIDMyIj4NCiAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5CbGFja3tmaWxsOiM3Mjcy
+        NzI7fQoJLlJlZHtmaWxsOiNEMTFDMUM7fQoJLnN0MHtvcGFjaXR5OjAuNzU7fQo8L3N0eWxlPg0KICA8
+        cmVjdCB4PSIyIiB5PSI2IiB3aWR0aD0iMTIiIGhlaWdodD0iNCIgY2xhc3M9IlJlZCIgLz4NCiAgPGcg
+        Y2xhc3M9InN0MCI+DQogICAgPHBhdGggZD0iTTIyLDZoMTB2MkgyMlY2eiBNMjIsMTJoMTB2LTJIMjJW
+        MTJ6IE0yMiwyMGgxMHYtMkgyMlYyMHogTTIyLDI0aDEwdi0ySDIyVjI0eiIgY2xhc3M9IkJsYWNrIiAv
+        Pg0KICA8L2c+DQogIDxwYXRoIGQ9Ik0xOCwyaDE0djJIMThWMnogTTE4LDE2aDE0di0ySDE4VjE2eiBN
+        MTgsMjhoMTR2LTJIMThWMjh6IiBjbGFzcz0iQmxhY2siIC8+DQo8L3N2Zz4L
+</value>
+  </data>
+  <data name="barBtnChangeLink.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
+        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAK0BAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
+        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBlbmFibGUt
+        YmFja2dyb3VuZD0ibmV3IDAgMCAzMiAzMiIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIgaWQ9IkxheWVyXzEi
+        Pg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkdyZWVue2ZpbGw6IzAzOUMyMzt9Cjwvc3R5bGU+
+        DQogIDxwb2x5Z29uIHBvaW50cz0iMzAsMjIgMjIsMTYgMjIsMjAgMTIsMjAgMjgsNCAyMiw0IDIsNCAy
+        LDggMTgsOCAyLDI0IDIyLDI0IDIyLDI4ICIgZmlsbD0iIzAzOUMyMyIgY2xhc3M9IkdyZWVuIiAvPg0K
+        PC9zdmc+Cw==
+</value>
+  </data>
+  <data name="barBtnView.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
+        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAADUCAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
+        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
+        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
+        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkJsdWV7ZmlsbDojMTE3N0Q3O30KCS5Z
+        ZWxsb3d7ZmlsbDojRkZCMTE1O30KCS5CbGFja3tmaWxsOiM3MjcyNzI7fQoJLkdyZWVue2ZpbGw6IzAz
+        OUMyMzt9CgkuUmVke2ZpbGw6I0QxMUMxQzt9Cgkuc3Qwe29wYWNpdHk6MC43NTt9Cgkuc3Qxe29wYWNp
+        dHk6MC41O30KPC9zdHlsZT4NCiAgPGcgaWQ9IlNlbmQiPg0KICAgIDxwb2x5Z29uIHBvaW50cz0iMiwy
+        MCA4LDIyLjQgMjQsMTAgMTIsMjQgMTIsMzAgMTYuMywyNS43IDIyLDI4IDMwLDIgICIgY2xhc3M9IkJs
+        dWUiIC8+DQogIDwvZz4NCjwvc3ZnPgs=
+</value>
+  </data>
+  <data name="barBtnDb.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
+        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAMACAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
+        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
+        Y2U9InByZXNlcnZlIiBpZD0iU2VsZWN0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAz
+        MiAzMiI+DQogIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CgkuQmxhY2t7ZmlsbDojNzI3MjcyO30KCS5C
+        bHVle2ZpbGw6IzExNzdENzt9Cgkuc3Qwe29wYWNpdHk6MC41O30KPC9zdHlsZT4NCiAgPGcgY2xhc3M9
+        InN0MCI+DQogICAgPHBhdGggZD0iTTEwLDEwSDZWNmg0VjEweiBNMjQsNkgxMnY0aDEyVjZ6IE0xMCwx
+        Mkg2djEyaDRWMTJ6IiBjbGFzcz0iQmx1ZSIgLz4NCiAgPC9nPg0KICA8cGF0aCBkPSJNMTYsMjhoLTEu
+        OEgxMkgzYy0wLjYsMC0xLTAuNC0xLTFWM2MwLTAuNiwwLjQtMSwxLTFoMjRjMC42LDAsMSwwLjQsMSwx
+        djl2Mi4ydjYuOWwtMi0ydi01VjEyVjRINHYyMmg4aDIuMSAgSDE2VjI4eiBNMjQuMiwyNkgzMEwxOCwx
+        NHYxNi41bDQtNGwyLDVjMC4yLDAuNCwwLjYsMC42LDEsMC40bDAuNy0wLjNjMC40LTAuMiwwLjYtMC42
+        LDAuNC0xTDI0LjIsMjZ6IiBjbGFzcz0iQmxhY2siIC8+DQo8L3N2Zz4L
+</value>
+  </data>
 </root>
\ No newline at end of file
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/02-tank/HydroTankListCtrl.Designer.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/02-tank/HydroTankListCtrl.Designer.cs
index 37e72a5..b5a26ee 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/02-tank/HydroTankListCtrl.Designer.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/02-tank/HydroTankListCtrl.Designer.cs
@@ -90,7 +90,7 @@
             // 
             // hydroTankViewModelBindingSource
             // 
-            hydroTankViewModelBindingSource.DataSource = typeof(HydroTankViewModel);
+            hydroTankViewModelBindingSource.DataSource = typeof(HydroElbowViewModel);
             // 
             // layoutControl1
             // 
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/00-core/HydroMatchingHelper.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/00-core/HydroMatchingHelper.cs
index 017c199..b83614e 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/00-core/HydroMatchingHelper.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/00-core/HydroMatchingHelper.cs
@@ -15,22 +15,9 @@
         #region 鍒涘缓
 
         /// <summary>
-        /// 鍒涘缓鑷姩鍖归厤ViewModel
-        /// </summary>
-        public static HydroMatchingViewModel Create(Yw.Model.HydroModelInfo hydroInfo, List<HydroCalcuVisualResult> allCalcuResultVisualList = null)
-        {
-            if (hydroInfo == null)
-            {
-                return default;
-            }
-            var allCalcuResultVisualDict = allCalcuResultVisualList?.ToDictionary(x => x.Code);
-            return Create(hydroInfo, allCalcuResultVisualDict);
-        }
-
-        /// <summary>
         /// 鍒涘缓
         /// </summary>
-        public static HydroMatchingViewModel Create(Yw.Model.HydroModelInfo hydroInfo, Dictionary<string, HydroCalcuVisualResult> allCalcuResultVisualDict = null)
+        public static HydroMatchingViewModel Create(Yw.Model.HydroModelInfo hydroInfo)
         {
             if (hydroInfo == null)
             {
@@ -42,97 +29,97 @@
             #region 姘存睜
 
             var tanks = hydroInfo.GetAllTanks();
-            vm.Tanks = tanks?.Select(x => Create(x, hydroInfo, allCalcuResultVisualDict?.GetValue(x.Code) as HydroCalcuNodeResult)).ToList();
+            vm.Tanks = tanks?.Select(x => Create(x, hydroInfo)).ToList();
 
             #endregion
 
             #region 闂峰ご
 
-            vm.Bluntheads = hydroInfo.Bluntheads?.Select(x => Create(x, hydroInfo, allCalcuResultVisualDict?.GetValue(x.Code) as HydroCalcuNodeResult)).ToList();
+            vm.Bluntheads = hydroInfo.Bluntheads?.Select(x => Create(x, hydroInfo)).ToList();
 
             #endregion
 
             #region 寮ご
 
-            vm.Elbows = hydroInfo.Elbows?.Select(x => Create(x, hydroInfo, allCalcuResultVisualDict?.GetValue(x.Code) as HydroCalcuNodeResult)).ToList();
+            vm.Elbows = hydroInfo.Elbows?.Select(x => Create(x, hydroInfo)).ToList();
 
             #endregion
 
             #region 涓夐��
 
-            vm.Threelinks = hydroInfo.Threelinks?.Select(x => Create(x, hydroInfo, allCalcuResultVisualDict?.GetValue(x.Code) as HydroCalcuNodeResult)).ToList();
+            vm.Threelinks = hydroInfo.Threelinks?.Select(x => Create(x, hydroInfo)).ToList();
 
             #endregion
 
             #region 鍥涢��
 
-            vm.Fourlinks = hydroInfo.Fourlinks?.Select(x => Create(x, hydroInfo, allCalcuResultVisualDict?.GetValue(x.Code) as HydroCalcuNodeResult)).ToList();
+            vm.Fourlinks = hydroInfo.Fourlinks?.Select(x => Create(x, hydroInfo)).ToList();
 
             #endregion
 
             #region 鍠峰槾
 
-            vm.Nozzles = hydroInfo.Nozzles?.Select(x => Create(x, hydroInfo, allCalcuResultVisualDict?.GetValue(x.Code) as HydroCalcuNodeResult)).ToList();
+            vm.Nozzles = hydroInfo.Nozzles?.Select(x => Create(x, hydroInfo)).ToList();
 
             #endregion
 
             #region 娑堢伀鏍�
 
-            vm.Hydrants = hydroInfo.Hydrants?.Select(x => Create(x, hydroInfo, allCalcuResultVisualDict?.GetValue(x.Code) as HydroCalcuNodeResult)).ToList();
+            vm.Hydrants = hydroInfo.Hydrants?.Select(x => Create(x, hydroInfo)).ToList();
 
             #endregion
 
             #region 姘磋〃
 
-            vm.Meters = hydroInfo.Meters?.Select(x => Create(x, hydroInfo, allCalcuResultVisualDict?.GetValue(x.Code) as HydroCalcuNodeResult)).ToList();
+            vm.Meters = hydroInfo.Meters?.Select(x => Create(x, hydroInfo)).ToList();
 
             #endregion
 
             #region 娴侀噺璁�
 
-            vm.Flowmeters = hydroInfo.Flowmeters?.Select(x => Create(x, hydroInfo, allCalcuResultVisualDict?.GetValue(x.Code) as HydroCalcuFlowmeterResult)).ToList();
+            vm.Flowmeters = hydroInfo.Flowmeters?.Select(x => Create(x, hydroInfo)).ToList();
 
             #endregion
 
             #region 鍘嬪姏琛�
 
-            vm.Pressmeters = hydroInfo.Pressmeters?.Select(x => Create(x, hydroInfo, allCalcuResultVisualDict?.GetValue(x.Code) as HydroCalcuPressmeterResult)).ToList();
+            vm.Pressmeters = hydroInfo.Pressmeters?.Select(x => Create(x, hydroInfo)).ToList();
 
             #endregion
 
             #region 绠¢亾
 
-            vm.Pipes = hydroInfo.Pipes?.Select(x => Create(x, hydroInfo, allCalcuResultVisualDict?.GetValue(x.Code) as HydroCalcuLinkResult)).ToList();
+            vm.Pipes = hydroInfo.Pipes?.Select(x => Create(x, hydroInfo)).ToList();
 
             #endregion
 
             #region 杩囨浮浠�
 
-            vm.Translations = hydroInfo.Translations?.Select(x => Create(x, hydroInfo, allCalcuResultVisualDict?.GetValue(x.Code) as HydroCalcuLinkResult)).ToList();
+            vm.Translations = hydroInfo.Translations?.Select(x => Create(x, hydroInfo)).ToList();
 
             #endregion
 
             #region 姘存车
 
-            vm.Pumps = hydroInfo.Pumps?.Select(x => Create(x, hydroInfo, allCalcuResultVisualDict?.GetValue(x.Code) as HydroCalcuPumpResult)).ToList();
+            vm.Pumps = hydroInfo.Pumps?.Select(x => Create(x, hydroInfo)).ToList();
 
             #endregion
 
             #region 闃�闂�
 
-            vm.Valves = hydroInfo.Valves?.Select(x => Create(x, hydroInfo, allCalcuResultVisualDict?.GetValue(x.Code) as HydroCalcuLinkResult)).ToList();
+            vm.Valves = hydroInfo.Valves?.Select(x => Create(x, hydroInfo)).ToList();
 
             #endregion
 
             #region 鎹㈢儹鍣�
 
-            vm.Exchangers = hydroInfo.Exchangers?.Select(x => Create(x, hydroInfo, allCalcuResultVisualDict?.GetValue(x.Code) as HydroCalcuLinkResult)).ToList();
+            vm.Exchangers = hydroInfo.Exchangers?.Select(x => Create(x, hydroInfo)).ToList();
 
             #endregion
 
             #region 鍘嬬缉鏈�
 
-            vm.Compressors = hydroInfo.Compressors?.Select(x => Create(x, hydroInfo, allCalcuResultVisualDict?.GetValue(x.Code) as HydroCalcuLinkResult)).ToList();
+            vm.Compressors = hydroInfo.Compressors?.Select(x => Create(x, hydroInfo)).ToList();
 
             #endregion
 
@@ -144,9 +131,9 @@
         /// <summary>
         /// 鍒涘缓姘存睜鑷姩鍖归厤ViewModel
         /// </summary>
-        public static HydroTankMatchingViewModel Create(HydroTankInfo parterInfo, HydroModelInfo hydroInfo, HydroCalcuNodeResult calcuResult = null)
+        public static HydroTankMatchingViewModel Create(HydroTankInfo visualInfo, HydroModelInfo hydroInfo)
         {
-            if (parterInfo == null)
+            if (visualInfo == null)
             {
                 return default;
             }
@@ -154,19 +141,19 @@
             {
                 return default;
             }
-            return new HydroTankMatchingViewModel(parterInfo, hydroInfo, calcuResult);
+            return new HydroTankMatchingViewModel(visualInfo, hydroInfo);
         }
 
         /// <summary>
         /// 鍒涘缓姘存睜鑷姩鍖归厤ViewModel
         /// </summary>
-        public static HydroTankMatchingViewModel Create(HydroTankViewModel parterViewModel)
+        public static HydroTankMatchingViewModel Create(HydroTankViewModel visualViewModel)
         {
-            if (parterViewModel == null)
+            if (visualViewModel == null)
             {
                 return default;
             }
-            return new HydroTankMatchingViewModel(parterViewModel);
+            return new HydroTankMatchingViewModel(visualViewModel);
         }
 
         #endregion
@@ -176,9 +163,9 @@
         /// <summary>
         /// 鍒涘缓闂峰ご鑷姩鍖归厤ViewModel
         /// </summary>
-        public static HydroBluntheadMatchingViewModel Create(HydroBluntheadInfo parterInfo, HydroModelInfo hydroInfo, HydroCalcuNodeResult calcuResult = null)
+        public static HydroBluntheadMatchingViewModel Create(HydroBluntheadInfo visualInfo, HydroModelInfo hydroInfo)
         {
-            if (parterInfo == null)
+            if (visualInfo == null)
             {
                 return default;
             }
@@ -186,19 +173,19 @@
             {
                 return default;
             }
-            return new HydroBluntheadMatchingViewModel(parterInfo, hydroInfo, calcuResult);
+            return new HydroBluntheadMatchingViewModel(visualInfo, hydroInfo);
         }
 
         /// <summary>
         /// 鍒涘缓闂峰ご鑷姩鍖归厤ViewModel
         /// </summary>
-        public static HydroBluntheadMatchingViewModel Create(HydroBluntheadViewModel parterViewModel)
+        public static HydroBluntheadMatchingViewModel Create(HydroBluntheadViewModel visualViewModel)
         {
-            if (parterViewModel == null)
+            if (visualViewModel == null)
             {
                 return default;
             }
-            return new HydroBluntheadMatchingViewModel(parterViewModel);
+            return new HydroBluntheadMatchingViewModel(visualViewModel);
         }
 
         #endregion
@@ -208,9 +195,9 @@
         /// <summary>
         /// 鍒涘缓寮ご鑷姩鍖归厤ViewModel
         /// </summary>
-        public static HydroElbowMatchingViewModel Create(HydroElbowInfo parterInfo, HydroModelInfo hydroInfo, HydroCalcuNodeResult calcuResult = null)
+        public static HydroElbowMatchingViewModel Create(HydroElbowInfo visualInfo, HydroModelInfo hydroInfo)
         {
-            if (parterInfo == null)
+            if (visualInfo == null)
             {
                 return default;
             }
@@ -218,19 +205,19 @@
             {
                 return default;
             }
-            return new HydroElbowMatchingViewModel(parterInfo, hydroInfo, calcuResult);
+            return new HydroElbowMatchingViewModel(visualInfo, hydroInfo);
         }
 
         /// <summary>
         /// 鍒涘缓寮ご鑷姩鍖归厤ViewModel
         /// </summary>
-        public static HydroElbowMatchingViewModel Create(HydroElbowViewModel parterViewModel)
+        public static HydroElbowMatchingViewModel Create(HydroElbowViewModel visualViewModel)
         {
-            if (parterViewModel == null)
+            if (visualViewModel == null)
             {
                 return default;
             }
-            return new HydroElbowMatchingViewModel(parterViewModel);
+            return new HydroElbowMatchingViewModel(visualViewModel);
         }
 
         #endregion
@@ -240,9 +227,9 @@
         /// <summary>
         /// 鍒涘缓涓夐�氳嚜鍔ㄥ尮閰峍iewModel
         /// </summary>
-        public static HydroThreelinkMatchingViewModel Create(HydroThreelinkInfo parterInfo, HydroModelInfo hydroInfo, HydroCalcuNodeResult calcuResult = null)
+        public static HydroThreelinkMatchingViewModel Create(HydroThreelinkInfo visualInfo, HydroModelInfo hydroInfo)
         {
-            if (parterInfo == null)
+            if (visualInfo == null)
             {
                 return default;
             }
@@ -250,19 +237,19 @@
             {
                 return default;
             }
-            return new HydroThreelinkMatchingViewModel(parterInfo, hydroInfo, calcuResult);
+            return new HydroThreelinkMatchingViewModel(visualInfo, hydroInfo);
         }
 
         /// <summary>
         /// 鍒涘缓涓夐�氳嚜鍔ㄥ尮閰峍iewModel
         /// </summary>
-        public static HydroThreelinkMatchingViewModel Create(HydroThreelinkViewModel parterViewModel)
+        public static HydroThreelinkMatchingViewModel Create(HydroThreelinkViewModel visualViewModel)
         {
-            if (parterViewModel == null)
+            if (visualViewModel == null)
             {
                 return default;
             }
-            return new HydroThreelinkMatchingViewModel(parterViewModel);
+            return new HydroThreelinkMatchingViewModel(visualViewModel);
         }
 
         #endregion
@@ -272,9 +259,9 @@
         /// <summary>
         /// 鍒涘缓鍥涢�氳嚜鍔ㄥ尮閰峍iewModel
         /// </summary>
-        public static HydroFourlinkMatchingViewModel Create(HydroFourlinkInfo parterInfo, HydroModelInfo hydroInfo, HydroCalcuNodeResult calcuResult = null)
+        public static HydroFourlinkMatchingViewModel Create(HydroFourlinkInfo visualInfo, HydroModelInfo hydroInfo)
         {
-            if (parterInfo == null)
+            if (visualInfo == null)
             {
                 return default;
             }
@@ -282,19 +269,19 @@
             {
                 return default;
             }
-            return new HydroFourlinkMatchingViewModel(parterInfo, hydroInfo, calcuResult);
+            return new HydroFourlinkMatchingViewModel(visualInfo, hydroInfo);
         }
 
         /// <summary>
         /// 鍒涘缓鍥涢�氳嚜鍔ㄥ尮閰峍iewModel
         /// </summary>
-        public static HydroFourlinkMatchingViewModel Create(HydroFourlinkViewModel parterViewModel)
+        public static HydroFourlinkMatchingViewModel Create(HydroFourlinkViewModel visualViewModel)
         {
-            if (parterViewModel == null)
+            if (visualViewModel == null)
             {
                 return default;
             }
-            return new HydroFourlinkMatchingViewModel(parterViewModel);
+            return new HydroFourlinkMatchingViewModel(visualViewModel);
         }
 
         #endregion
@@ -304,9 +291,9 @@
         /// <summary>
         /// 鍒涘缓鍠峰ご鑷姩鍖归厤ViewModel
         /// </summary>
-        public static HydroNozzleMatchingViewModel Create(HydroNozzleInfo parterInfo, HydroModelInfo hydroInfo, HydroCalcuNodeResult calcuResult = null)
+        public static HydroNozzleMatchingViewModel Create(HydroNozzleInfo visualInfo, HydroModelInfo hydroInfo)
         {
-            if (parterInfo == null)
+            if (visualInfo == null)
             {
                 return default;
             }
@@ -314,19 +301,19 @@
             {
                 return default;
             }
-            return new HydroNozzleMatchingViewModel(parterInfo, hydroInfo, calcuResult);
+            return new HydroNozzleMatchingViewModel(visualInfo, hydroInfo);
         }
 
         /// <summary>
         /// 鍒涘缓鍠峰ご鑷姩鍖归厤ViewModel
         /// </summary>
-        public static HydroNozzleMatchingViewModel Create(HydroNozzleViewModel parterViewModel)
+        public static HydroNozzleMatchingViewModel Create(HydroNozzleViewModel visualViewModel)
         {
-            if (parterViewModel == null)
+            if (visualViewModel == null)
             {
                 return default;
             }
-            return new HydroNozzleMatchingViewModel(parterViewModel);
+            return new HydroNozzleMatchingViewModel(visualViewModel);
         }
 
         #endregion
@@ -336,9 +323,9 @@
         /// <summary>
         /// 鍒涘缓娑堢伀鏍撹嚜鍔ㄥ尮閰峍iewModel
         /// </summary>
-        public static HydroHydrantMatchingViewModel Create(HydroHydrantInfo parterInfo, HydroModelInfo hydroInfo, HydroCalcuNodeResult calcuResult = null)
+        public static HydroHydrantMatchingViewModel Create(HydroHydrantInfo visualInfo, HydroModelInfo hydroInfo)
         {
-            if (parterInfo == null)
+            if (visualInfo == null)
             {
                 return default;
             }
@@ -346,19 +333,19 @@
             {
                 return default;
             }
-            return new HydroHydrantMatchingViewModel(parterInfo, hydroInfo, calcuResult);
+            return new HydroHydrantMatchingViewModel(visualInfo, hydroInfo);
         }
 
         /// <summary>
         /// 鍒涘缓娑堢伀鏍撹嚜鍔ㄥ尮閰峍iewModel
         /// </summary>
-        public static HydroHydrantMatchingViewModel Create(HydroHydrantViewModel parterViewModel)
+        public static HydroHydrantMatchingViewModel Create(HydroHydrantViewModel visualViewModel)
         {
-            if (parterViewModel == null)
+            if (visualViewModel == null)
             {
                 return default;
             }
-            return new HydroHydrantMatchingViewModel(parterViewModel);
+            return new HydroHydrantMatchingViewModel(visualViewModel);
         }
 
         #endregion
@@ -368,9 +355,9 @@
         /// <summary>
         /// 鍒涘缓姘磋〃鑷姩鍖归厤ViewModel
         /// </summary>
-        public static HydroMeterMatchingViewModel Create(HydroMeterInfo parterInfo, HydroModelInfo hydroInfo, HydroCalcuNodeResult calcuResult = null)
+        public static HydroMeterMatchingViewModel Create(HydroMeterInfo visualInfo, HydroModelInfo hydroInfo)
         {
-            if (parterInfo == null)
+            if (visualInfo == null)
             {
                 return default;
             }
@@ -378,19 +365,19 @@
             {
                 return default;
             }
-            return new HydroMeterMatchingViewModel(parterInfo, hydroInfo, calcuResult);
+            return new HydroMeterMatchingViewModel(visualInfo, hydroInfo);
         }
 
         /// <summary>
         /// 鍒涘缓姘磋〃鑷姩鍖归厤ViewModel
         /// </summary>
-        public static HydroMeterMatchingViewModel Create(HydroMeterViewModel parterViewModel)
+        public static HydroMeterMatchingViewModel Create(HydroMeterViewModel visualViewModel)
         {
-            if (parterViewModel == null)
+            if (visualViewModel == null)
             {
                 return default;
             }
-            return new HydroMeterMatchingViewModel(parterViewModel);
+            return new HydroMeterMatchingViewModel(visualViewModel);
         }
 
         #endregion
@@ -400,9 +387,9 @@
         /// <summary>
         /// 鍒涘缓娴侀噺璁¤嚜鍔ㄥ尮閰峍iewModel
         /// </summary>
-        public static HydroFlowmeterMatchingViewModel Create(HydroFlowmeterInfo parterInfo, HydroModelInfo hydroInfo, HydroCalcuFlowmeterResult calcuResult = null)
+        public static HydroFlowmeterMatchingViewModel Create(HydroFlowmeterInfo visualInfo, HydroModelInfo hydroInfo)
         {
-            if (parterInfo == null)
+            if (visualInfo == null)
             {
                 return default;
             }
@@ -410,19 +397,19 @@
             {
                 return default;
             }
-            return new HydroFlowmeterMatchingViewModel(parterInfo, hydroInfo, calcuResult);
+            return new HydroFlowmeterMatchingViewModel(visualInfo, hydroInfo);
         }
 
         /// <summary>
         /// 鍒涘缓娴侀噺璁¤嚜鍔ㄥ尮閰峍iewModel
         /// </summary>
-        public static HydroFlowmeterMatchingViewModel Create(HydroFlowmeterViewModel parterViewModel)
+        public static HydroFlowmeterMatchingViewModel Create(HydroFlowmeterViewModel visualViewModel)
         {
-            if (parterViewModel == null)
+            if (visualViewModel == null)
             {
                 return default;
             }
-            return new HydroFlowmeterMatchingViewModel(parterViewModel);
+            return new HydroFlowmeterMatchingViewModel(visualViewModel);
         }
 
         #endregion
@@ -432,9 +419,9 @@
         /// <summary>
         /// 鍒涘缓鍘嬪姏琛ㄨ嚜鍔ㄥ尮閰峍iewModel
         /// </summary>
-        public static HydroPressmeterMatchingViewModel Create(HydroPressmeterInfo parterInfo, HydroModelInfo hydroInfo, HydroCalcuPressmeterResult calcuResult = null)
+        public static HydroPressmeterMatchingViewModel Create(HydroPressmeterInfo visualInfo, HydroModelInfo hydroInfo)
         {
-            if (parterInfo == null)
+            if (visualInfo == null)
             {
                 return default;
             }
@@ -442,19 +429,19 @@
             {
                 return default;
             }
-            return new HydroPressmeterMatchingViewModel(parterInfo, hydroInfo, calcuResult);
+            return new HydroPressmeterMatchingViewModel(visualInfo, hydroInfo);
         }
 
         /// <summary>
         /// 鍒涘缓鍘嬪姏琛ㄨ嚜鍔ㄥ尮閰峍iewModel
         /// </summary>
-        public static HydroPressmeterMatchingViewModel Create(HydroPressmeterViewModel parterViewModel)
+        public static HydroPressmeterMatchingViewModel Create(HydroPressmeterViewModel visualViewModel)
         {
-            if (parterViewModel == null)
+            if (visualViewModel == null)
             {
                 return default;
             }
-            return new HydroPressmeterMatchingViewModel(parterViewModel);
+            return new HydroPressmeterMatchingViewModel(visualViewModel);
         }
 
         #endregion
@@ -464,9 +451,9 @@
         /// <summary>
         /// 鍒涘缓绠¢亾鑷姩鍖归厤ViewModel
         /// </summary>
-        public static HydroPipeMatchingViewModel Create(HydroPipeInfo pipeInfo, HydroModelInfo hydroInfo, HydroCalcuLinkResult calcuResult = null)
+        public static HydroPipeMatchingViewModel Create(HydroPipeInfo visualInfo, HydroModelInfo hydroInfo)
         {
-            if (pipeInfo == null)
+            if (visualInfo == null)
             {
                 return default;
             }
@@ -474,19 +461,19 @@
             {
                 return default;
             }
-            return new HydroPipeMatchingViewModel(pipeInfo, hydroInfo, calcuResult);
+            return new HydroPipeMatchingViewModel(visualInfo, hydroInfo);
         }
 
         /// <summary>
         /// 鍒涘缓绠¢亾鑷姩鍖归厤ViewModel
         /// </summary>
-        public static HydroPipeMatchingViewModel Create(HydroPipeViewModel pipeViewModel)
+        public static HydroPipeMatchingViewModel Create(HydroPipeViewModel visualViewModel)
         {
-            if (pipeViewModel == null)
+            if (visualViewModel == null)
             {
                 return default;
             }
-            return new HydroPipeMatchingViewModel(pipeViewModel);
+            return new HydroPipeMatchingViewModel(visualViewModel);
         }
 
         #endregion
@@ -496,9 +483,9 @@
         /// <summary>
         /// 鍒涘缓杩囨浮浠惰嚜鍔ㄥ尮閰峍iewModel
         /// </summary>
-        public static HydroTranslationMatchingViewModel Create(HydroTranslationInfo parterInfo, HydroModelInfo hydroInfo, HydroCalcuLinkResult calcuResult = null)
+        public static HydroTranslationMatchingViewModel Create(HydroTranslationInfo visualInfo, HydroModelInfo hydroInfo)
         {
-            if (parterInfo == null)
+            if (visualInfo == null)
             {
                 return default;
             }
@@ -506,19 +493,19 @@
             {
                 return default;
             }
-            return new HydroTranslationMatchingViewModel(parterInfo, hydroInfo, calcuResult);
+            return new HydroTranslationMatchingViewModel(visualInfo, hydroInfo);
         }
 
         /// <summary>
         /// 鍒涘缓杩囨浮浠惰嚜鍔ㄥ尮閰峍iewModel
         /// </summary>
-        public static HydroTranslationMatchingViewModel Create(HydroTranslationViewModel parterViewModel)
+        public static HydroTranslationMatchingViewModel Create(HydroTranslationViewModel visualViewModel)
         {
-            if (parterViewModel == null)
+            if (visualViewModel == null)
             {
                 return default;
             }
-            return new HydroTranslationMatchingViewModel(parterViewModel);
+            return new HydroTranslationMatchingViewModel(visualViewModel);
         }
 
         #endregion
@@ -528,9 +515,9 @@
         /// <summary>
         /// 鍒涘缓姘存车鑷姩鍖归厤ViewModel
         /// </summary>
-        public static HydroPumpMatchingViewModel Create(HydroPumpInfo pumpInfo, HydroModelInfo hydroInfo, HydroCalcuPumpResult calcuResult = null)
+        public static HydroPumpMatchingViewModel Create(HydroPumpInfo visualInfo, HydroModelInfo hydroInfo)
         {
-            if (pumpInfo == null)
+            if (visualInfo == null)
             {
                 return default;
             }
@@ -538,19 +525,19 @@
             {
                 return default;
             }
-            return new HydroPumpMatchingViewModel(pumpInfo, hydroInfo, calcuResult);
+            return new HydroPumpMatchingViewModel(visualInfo, hydroInfo);
         }
 
         /// <summary>
         /// 鍒涘缓姘存车鑷姩鍖归厤ViewModel
         /// </summary>
-        public static HydroPumpMatchingViewModel Create(HydroPumpViewModel pumpViewModel)
+        public static HydroPumpMatchingViewModel Create(HydroPumpViewModel visualViewModel)
         {
-            if (pumpViewModel == null)
+            if (visualViewModel == null)
             {
                 return default;
             }
-            return new HydroPumpMatchingViewModel(pumpViewModel);
+            return new HydroPumpMatchingViewModel(visualViewModel);
         }
 
         #endregion
@@ -560,9 +547,9 @@
         /// <summary>
         /// 鍒涘缓闃�闂ㄨ嚜鍔ㄥ尮閰峍iewModel
         /// </summary>
-        public static HydroValveMatchingViewModel Create(HydroValveInfo valveInfo, HydroModelInfo hydroInfo, HydroCalcuLinkResult calcuResult = null)
+        public static HydroValveMatchingViewModel Create(HydroValveInfo visualInfo, HydroModelInfo hydroInfo)
         {
-            if (valveInfo == null)
+            if (visualInfo == null)
             {
                 return default;
             }
@@ -570,19 +557,19 @@
             {
                 return default;
             }
-            return new HydroValveMatchingViewModel(valveInfo, hydroInfo, calcuResult);
+            return new HydroValveMatchingViewModel(visualInfo, hydroInfo);
         }
 
         /// <summary>
         /// 鍒涘缓闃�闂ㄨ嚜鍔ㄥ尮閰峍iewModel
         /// </summary>
-        public static HydroValveMatchingViewModel Create(HydroValveViewModel valveViewModel)
+        public static HydroValveMatchingViewModel Create(HydroValveViewModel visualViewModel)
         {
-            if (valveViewModel == null)
+            if (visualViewModel == null)
             {
                 return default;
             }
-            return new HydroValveMatchingViewModel(valveViewModel);
+            return new HydroValveMatchingViewModel(visualViewModel);
         }
 
         #endregion
@@ -592,9 +579,9 @@
         /// <summary>
         /// 鍒涘缓鎹㈢儹鍣ㄨ嚜鍔ㄥ尮閰峍iewModel
         /// </summary>
-        public static HydroExchangerMatchingViewModel Create(HydroExchangerInfo parterInfo, HydroModelInfo hydroInfo, HydroCalcuLinkResult calcuResult = null)
+        public static HydroExchangerMatchingViewModel Create(HydroExchangerInfo visualInfo, HydroModelInfo hydroInfo)
         {
-            if (parterInfo == null)
+            if (visualInfo == null)
             {
                 return default;
             }
@@ -602,19 +589,19 @@
             {
                 return default;
             }
-            return new HydroExchangerMatchingViewModel(parterInfo, hydroInfo, calcuResult);
+            return new HydroExchangerMatchingViewModel(visualInfo, hydroInfo);
         }
 
         /// <summary>
         /// 鍒涘缓鎹㈢儹鍣ㄨ嚜鍔ㄥ尮閰峍iewModel
         /// </summary>
-        public static HydroExchangerMatchingViewModel Create(HydroExchangerViewModel parterViewModel)
+        public static HydroExchangerMatchingViewModel Create(HydroExchangerViewModel visualViewModel)
         {
-            if (parterViewModel == null)
+            if (visualViewModel == null)
             {
                 return default;
             }
-            return new HydroExchangerMatchingViewModel(parterViewModel);
+            return new HydroExchangerMatchingViewModel(visualViewModel);
         }
 
         #endregion
@@ -624,9 +611,9 @@
         /// <summary>
         /// 鍒涘缓鍘嬬缉鏈鸿嚜鍔ㄥ尮閰峍iewModel
         /// </summary>
-        public static HydroCompressorMatchingViewModel Create(HydroCompressorInfo parterInfo, HydroModelInfo hydroInfo, HydroCalcuLinkResult calcuResult = null)
+        public static HydroCompressorMatchingViewModel Create(HydroCompressorInfo visualInfo, HydroModelInfo hydroInfo)
         {
-            if (parterInfo == null)
+            if (visualInfo == null)
             {
                 return default;
             }
@@ -634,19 +621,19 @@
             {
                 return default;
             }
-            return new HydroCompressorMatchingViewModel(parterInfo, hydroInfo, calcuResult);
+            return new HydroCompressorMatchingViewModel(visualInfo, hydroInfo);
         }
 
         /// <summary>
         /// 鍒涘缓鍘嬬缉鏈鸿嚜鍔ㄥ尮閰峍iewModel
         /// </summary>
-        public static HydroCompressorMatchingViewModel Create(HydroCompressorViewModel parterViewModel)
+        public static HydroCompressorMatchingViewModel Create(HydroCompressorViewModel visualViewModel)
         {
-            if (parterViewModel == null)
+            if (visualViewModel == null)
             {
                 return default;
             }
-            return new HydroCompressorMatchingViewModel(parterViewModel);
+            return new HydroCompressorMatchingViewModel(visualViewModel);
         }
 
         #endregion
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/01-tank/HydroTankMatchingViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/01-tank/HydroTankMatchingViewModel.cs
index 09b7d7b..bd7a5b6 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/01-tank/HydroTankMatchingViewModel.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/01-tank/HydroTankMatchingViewModel.cs
@@ -8,8 +8,7 @@
         /// <summary>
         ///
         /// </summary>
-        public HydroTankMatchingViewModel()
-        { }
+        public HydroTankMatchingViewModel() { }
 
         /// <summary>
         ///
@@ -33,16 +32,7 @@
         /// <summary>
         ///
         /// </summary>
-        public HydroTankMatchingViewModel(Yw.Model.HydroTankInfo rhs, Yw.Model.HydroModelInfo hydroInfo, HydroCalcuNodeResult calcuResult) : this(rhs, hydroInfo)
-        {
-        }
-
-        /// <summary>
-        ///
-        /// </summary>
-        public HydroTankMatchingViewModel(HydroTankViewModel rhs) : this(rhs.Vmo, rhs.HydroInfo)
-        {
-        }
+        public HydroTankMatchingViewModel(HydroTankViewModel rhs) : this(rhs.Vmo, rhs.HydroInfo) { }
 
         /// <summary>
         /// ID
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/02-blunthead/HydroBluntheadMatchingViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/02-blunthead/HydroBluntheadMatchingViewModel.cs
index c0b269f..4da234b 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/02-blunthead/HydroBluntheadMatchingViewModel.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/02-blunthead/HydroBluntheadMatchingViewModel.cs
@@ -29,18 +29,7 @@
         /// <summary>
         ///
         /// </summary>
-        public HydroBluntheadMatchingViewModel(Yw.Model.HydroBluntheadInfo rhs, Yw.Model.HydroModelInfo hydroInfo, HydroCalcuNodeResult calcuResult) : this(rhs, hydroInfo)
-        {
-
-        }
-
-        /// <summary>
-        ///
-        /// </summary>
-        public HydroBluntheadMatchingViewModel(HydroBluntheadViewModel rhs) : this(rhs.Vmo, rhs.HydroInfo)
-        {
-
-        }
+        public HydroBluntheadMatchingViewModel(HydroBluntheadViewModel rhs) : this(rhs.Vmo, rhs.HydroInfo) { }
 
         /// <summary>
         /// ID
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/03-elbow/HydroElbowMatchingViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/03-elbow/HydroElbowMatchingViewModel.cs
index 8916b69..f01c025 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/03-elbow/HydroElbowMatchingViewModel.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/03-elbow/HydroElbowMatchingViewModel.cs
@@ -31,18 +31,7 @@
         /// <summary>
         ///
         /// </summary>
-        public HydroElbowMatchingViewModel(Yw.Model.HydroElbowInfo rhs, Yw.Model.HydroModelInfo hydroInfo, HydroCalcuNodeResult calcuResult) : this(rhs, hydroInfo)
-        {
-
-        }
-
-        /// <summary>
-        ///
-        /// </summary>
-        public HydroElbowMatchingViewModel(HydroElbowViewModel rhs) : this(rhs.Vmo, rhs.HydroInfo)
-        {
-
-        }
+        public HydroElbowMatchingViewModel(HydroElbowViewModel rhs) : this(rhs.Vmo, rhs.HydroInfo) { }
 
         /// <summary>
         /// ID
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/04-threelink/HydroThreelinkMatchingViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/04-threelink/HydroThreelinkMatchingViewModel.cs
index c3bb3a8..5cd86f8 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/04-threelink/HydroThreelinkMatchingViewModel.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/04-threelink/HydroThreelinkMatchingViewModel.cs
@@ -31,18 +31,7 @@
         /// <summary>
         ///
         /// </summary>
-        public HydroThreelinkMatchingViewModel(Yw.Model.HydroThreelinkInfo rhs, Yw.Model.HydroModelInfo hydroInfo, HydroCalcuNodeResult calcuResult) : this(rhs, hydroInfo)
-        {
-
-        }
-
-        /// <summary>
-        ///
-        /// </summary>
-        public HydroThreelinkMatchingViewModel(HydroThreelinkViewModel rhs) : this(rhs.Vmo, rhs.HydroInfo)
-        {
-
-        }
+        public HydroThreelinkMatchingViewModel(HydroThreelinkViewModel rhs) : this(rhs.Vmo, rhs.HydroInfo) { }
 
         /// <summary>
         /// ID
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/05-fourlink/HydroFourlinkMatchingViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/05-fourlink/HydroFourlinkMatchingViewModel.cs
index 767a76a..28d4647 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/05-fourlink/HydroFourlinkMatchingViewModel.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/05-fourlink/HydroFourlinkMatchingViewModel.cs
@@ -29,18 +29,7 @@
         /// <summary>
         ///
         /// </summary>
-        public HydroFourlinkMatchingViewModel(Yw.Model.HydroFourlinkInfo rhs, Yw.Model.HydroModelInfo hydroInfo, HydroCalcuNodeResult calcuResult) : this(rhs, hydroInfo)
-        {
-
-        }
-
-        /// <summary>
-        ///
-        /// </summary>
-        public HydroFourlinkMatchingViewModel(HydroFourlinkViewModel rhs) : this(rhs.Vmo, rhs.HydroInfo)
-        {
-
-        }
+        public HydroFourlinkMatchingViewModel(HydroFourlinkViewModel rhs) : this(rhs.Vmo, rhs.HydroInfo) { }
 
         /// <summary>
         /// ID
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/06-meter/HydroMeterMatchingViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/06-meter/HydroMeterMatchingViewModel.cs
index 51a7142..30141b4 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/06-meter/HydroMeterMatchingViewModel.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/06-meter/HydroMeterMatchingViewModel.cs
@@ -27,18 +27,7 @@
         /// <summary>
         ///
         /// </summary>
-        public HydroMeterMatchingViewModel(Yw.Model.HydroMeterInfo rhs, Yw.Model.HydroModelInfo hydroInfo, HydroCalcuNodeResult calcuResult) : this(rhs, hydroInfo)
-        {
-
-        }
-
-        /// <summary>
-        ///
-        /// </summary>
-        public HydroMeterMatchingViewModel(HydroMeterViewModel rhs) : this(rhs.Vmo, rhs.HydroInfo)
-        {
-
-        }
+        public HydroMeterMatchingViewModel(HydroMeterViewModel rhs) : this(rhs.Vmo, rhs.HydroInfo) { }
 
         /// <summary>
         /// ID
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/07-flowmeter/HydroFlowmeterMatchingViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/07-flowmeter/HydroFlowmeterMatchingViewModel.cs
index 909af12..4b46196 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/07-flowmeter/HydroFlowmeterMatchingViewModel.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/07-flowmeter/HydroFlowmeterMatchingViewModel.cs
@@ -27,18 +27,7 @@
         /// <summary>
         ///
         /// </summary>
-        public HydroFlowmeterMatchingViewModel(Yw.Model.HydroFlowmeterInfo rhs, Yw.Model.HydroModelInfo hydroInfo, HydroCalcuFlowmeterResult calcuResult) : this(rhs, hydroInfo)
-        {
-
-        }
-
-        /// <summary>
-        ///
-        /// </summary>
-        public HydroFlowmeterMatchingViewModel(HydroFlowmeterViewModel rhs) : this(rhs.Vmo, rhs.HydroInfo)
-        {
-
-        }
+        public HydroFlowmeterMatchingViewModel(HydroFlowmeterViewModel rhs) : this(rhs.Vmo, rhs.HydroInfo) { }
 
         /// <summary>
         /// ID
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/08-pressmeter/HydroFlowmeterMatchingViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/08-pressmeter/HydroFlowmeterMatchingViewModel.cs
index cbda043..09242dc 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/08-pressmeter/HydroFlowmeterMatchingViewModel.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/08-pressmeter/HydroFlowmeterMatchingViewModel.cs
@@ -27,18 +27,7 @@
         /// <summary>
         ///
         /// </summary>
-        public HydroPressmeterMatchingViewModel(Yw.Model.HydroPressmeterInfo rhs, Yw.Model.HydroModelInfo hydroInfo, HydroCalcuPressmeterResult calcuResult) : this(rhs, hydroInfo)
-        {
-
-        }
-
-        /// <summary>
-        ///
-        /// </summary>
-        public HydroPressmeterMatchingViewModel(HydroPressmeterViewModel rhs) : this(rhs.Vmo, rhs.HydroInfo)
-        {
-
-        }
+        public HydroPressmeterMatchingViewModel(HydroPressmeterViewModel rhs) : this(rhs.Vmo, rhs.HydroInfo) { }
 
         /// <summary>
         /// ID
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/09-nozzle/HydroNozzleMatchingViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/09-nozzle/HydroNozzleMatchingViewModel.cs
index 7af3c13..f198089 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/09-nozzle/HydroNozzleMatchingViewModel.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/09-nozzle/HydroNozzleMatchingViewModel.cs
@@ -30,18 +30,7 @@
         /// <summary>
         ///
         /// </summary>
-        public HydroNozzleMatchingViewModel(Yw.Model.HydroNozzleInfo rhs, Yw.Model.HydroModelInfo hydroInfo, HydroCalcuNodeResult calcuResult) : this(rhs, hydroInfo)
-        {
-
-        }
-
-        /// <summary>
-        ///
-        /// </summary>
-        public HydroNozzleMatchingViewModel(HydroNozzleViewModel rhs) : this(rhs.Vmo, rhs.HydroInfo)
-        {
-
-        }
+        public HydroNozzleMatchingViewModel(HydroNozzleViewModel rhs) : this(rhs.Vmo, rhs.HydroInfo) { }
 
         /// <summary>
         /// ID
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/10-hydrant/HydroHydrantMatchingViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/10-hydrant/HydroHydrantMatchingViewModel.cs
index 08e4db8..766d301 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/10-hydrant/HydroHydrantMatchingViewModel.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/10-hydrant/HydroHydrantMatchingViewModel.cs
@@ -30,18 +30,7 @@
         /// <summary>
         ///
         /// </summary>
-        public HydroHydrantMatchingViewModel(Yw.Model.HydroHydrantInfo rhs, Yw.Model.HydroModelInfo hydroInfo, HydroCalcuNodeResult calcuResult) : this(rhs, hydroInfo)
-        {
-
-        }
-
-        /// <summary>
-        ///
-        /// </summary>
-        public HydroHydrantMatchingViewModel(HydroHydrantViewModel rhs) : this(rhs.Vmo, rhs.HydroInfo)
-        {
-
-        }
+        public HydroHydrantMatchingViewModel(HydroHydrantViewModel rhs) : this(rhs.Vmo, rhs.HydroInfo) { }
 
         /// <summary>
         /// ID
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/11-pipe/HydroPipeMatchingViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/11-pipe/HydroPipeMatchingViewModel.cs
index 2cd6372..4c89dad 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/11-pipe/HydroPipeMatchingViewModel.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/11-pipe/HydroPipeMatchingViewModel.cs
@@ -31,18 +31,7 @@
         /// <summary>
         ///
         /// </summary>
-        public HydroPipeMatchingViewModel(Yw.Model.HydroPipeInfo rhs, Yw.Model.HydroModelInfo hydroInfo, HydroCalcuLinkResult calcuResult) : this(rhs, hydroInfo)
-        {
-
-        }
-
-        /// <summary>
-        ///
-        /// </summary>
-        public HydroPipeMatchingViewModel(HydroPipeViewModel rhs) : this(rhs.Vmo, rhs.HydroInfo)
-        {
-
-        }
+        public HydroPipeMatchingViewModel(HydroPipeViewModel rhs) : this(rhs.Vmo, rhs.HydroInfo) { }
 
         /// <summary>
         /// ID
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/12-pump/HydroPumpMatchingViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/12-pump/HydroPumpMatchingViewModel.cs
index a6b6e1f..c6e7610 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/12-pump/HydroPumpMatchingViewModel.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/12-pump/HydroPumpMatchingViewModel.cs
@@ -33,20 +33,7 @@
         /// <summary>
         /// 
         /// </summary>
-        public HydroPumpMatchingViewModel(Yw.Model.HydroPumpInfo rhs, Yw.Model.HydroModelInfo hydroInfo, HydroCalcuPumpResult calcuResult) : this(rhs, hydroInfo)
-        {
-            this.CalcuQ = calcuResult?.CalcuQ;
-            this.CalcuH = calcuResult?.CalcuH;
-        }
-
-        /// <summary>
-        /// 
-        /// </summary>
-        public HydroPumpMatchingViewModel(HydroPumpViewModel rhs) : this(rhs.Vmo, rhs.HydroInfo)
-        {
-            this.CalcuQ = rhs.CalcuQ;
-            this.CalcuH = rhs.CalcuH;
-        }
+        public HydroPumpMatchingViewModel(HydroPumpViewModel rhs) : this(rhs.Vmo, rhs.HydroInfo) { }
 
         /// <summary>
         /// ID
@@ -112,16 +99,6 @@
         /// 璁惧畾棰戠巼
         /// </summary>
         public double CurrentHz { get; set; }
-
-        /// <summary>
-        /// 璁$畻娴侀噺
-        /// </summary>
-        public double? CalcuQ { get; set; }
-
-        /// <summary>
-        /// 璁$畻鎵▼
-        /// </summary>
-        public double? CalcuH { get; set; }
 
         /// <summary>
         /// 鍖归厤鍨嬪彿
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/12-translation/HydroTranslationMatchingViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/12-translation/HydroTranslationMatchingViewModel.cs
index e50fd9e..cbef6c9 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/12-translation/HydroTranslationMatchingViewModel.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/12-translation/HydroTranslationMatchingViewModel.cs
@@ -33,18 +33,7 @@
         /// <summary>
         ///
         /// </summary>
-        public HydroTranslationMatchingViewModel(Yw.Model.HydroTranslationInfo rhs, Yw.Model.HydroModelInfo hydroInfo, HydroCalcuLinkResult calcuResult) : this(rhs, hydroInfo)
-        {
-
-        }
-
-        /// <summary>
-        ///
-        /// </summary>
-        public HydroTranslationMatchingViewModel(HydroTranslationViewModel rhs) : this(rhs.Vmo, rhs.HydroInfo)
-        {
-
-        }
+        public HydroTranslationMatchingViewModel(HydroTranslationViewModel rhs) : this(rhs.Vmo, rhs.HydroInfo) { }
 
         /// <summary>
         /// ID
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/14-valve/HydroValveMatchingViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/14-valve/HydroValveMatchingViewModel.cs
index 668e786..4a38ba7 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/14-valve/HydroValveMatchingViewModel.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/14-valve/HydroValveMatchingViewModel.cs
@@ -37,14 +37,6 @@
         /// <summary>
         ///
         /// </summary>
-        public HydroValveMatchingViewModel(Yw.Model.HydroValveInfo rhs, Yw.Model.HydroModelInfo hydroInfo, HydroCalcuLinkResult calcuResult) : this(rhs, hydroInfo)
-        {
-
-        }
-
-        /// <summary>
-        ///
-        /// </summary>
         public HydroValveMatchingViewModel(HydroValveViewModel rhs) : this(rhs.Vmo, rhs.HydroInfo)
         {
 
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/15-exchanger/HydroExchangerMatchingViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/15-exchanger/HydroExchangerMatchingViewModel.cs
index c4a2ab3..82ab3a5 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/15-exchanger/HydroExchangerMatchingViewModel.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/15-exchanger/HydroExchangerMatchingViewModel.cs
@@ -30,18 +30,7 @@
         /// <summary>
         ///
         /// </summary>
-        public HydroExchangerMatchingViewModel(Yw.Model.HydroExchangerInfo rhs, Yw.Model.HydroModelInfo hydroInfo, HydroCalcuLinkResult calcuResult) : this(rhs, hydroInfo)
-        {
-
-        }
-
-        /// <summary>
-        ///
-        /// </summary>
-        public HydroExchangerMatchingViewModel(HydroExchangerViewModel rhs) : this(rhs.Vmo, rhs.HydroInfo)
-        {
-
-        }
+        public HydroExchangerMatchingViewModel(HydroExchangerViewModel rhs) : this(rhs.Vmo, rhs.HydroInfo) { }
 
         /// <summary>
         /// ID
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/16-compressor/HydroCompressorMatchingViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/16-compressor/HydroCompressorMatchingViewModel.cs
index 90ef59c..e0e20c5 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/16-compressor/HydroCompressorMatchingViewModel.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/16-compressor/HydroCompressorMatchingViewModel.cs
@@ -30,18 +30,7 @@
         /// <summary>
         ///
         /// </summary>
-        public HydroCompressorMatchingViewModel(Yw.Model.HydroCompressorInfo rhs, Yw.Model.HydroModelInfo hydroInfo, HydroCalcuLinkResult calcuResult) : this(rhs, hydroInfo)
-        {
-
-        }
-
-        /// <summary>
-        ///
-        /// </summary>
-        public HydroCompressorMatchingViewModel(HydroCompressorViewModel rhs) : this(rhs.Vmo, rhs.HydroInfo)
-        {
-
-        }
+        public HydroCompressorMatchingViewModel(HydroCompressorViewModel rhs) : this(rhs.Vmo, rhs.HydroInfo) { }
 
         /// <summary>
         /// ID
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 9eb5408..60e402f 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/Yw.WinFrmUI.Hydro.Core.csproj
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/Yw.WinFrmUI.Hydro.Core.csproj
@@ -62,12 +62,6 @@
 		<Compile Update="02-model\HydroModelMgrPage.cs">
 			<SubType>UserControl</SubType>
 		</Compile>
-		<Compile Update="04-viewmodel\07-curve\01-view\HydroCurveViewDlg.cs">
-			<SubType>Form</SubType>
-		</Compile>
-		<Compile Update="04-viewmodel\07-curve\02-set\SetHydroCurveDlg.cs">
-			<SubType>Form</SubType>
-		</Compile>
 		<Compile Update="05-property\HydroVisualPropertyViewCtrl.cs">
 			<SubType>UserControl</SubType>
 		</Compile>
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 54d0f65..3f6e3bb 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
@@ -4,12 +4,6 @@
     <Compile Update="01-scene\AddHydroSceneDlg.cs">
       <SubType>Form</SubType>
     </Compile>
-    <Compile Update="04-viewmodel\07-curve\01-view\HydroCurveViewCtrl.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Update="04-viewmodel\07-curve\02-set\SetHydroCurveCtrl.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
     <Compile Update="05-property\HydroVisualPropertyDescriptionCtrl.cs">
       <SubType>UserControl</SubType>
     </Compile>

--
Gitblit v1.9.3