From c07b3c05c06f7b32dc52f936895f4fc9f33a5c87 Mon Sep 17 00:00:00 2001
From: Shuxia Ning <NingShuxia0927@outlook.com>
Date: 星期三, 14 八月 2024 14:13:45 +0800
Subject: [PATCH] 界面微调

---
 Desktop/HStation.Desktop.Xhs.Core/MainForm.resx                                                                    |    6 
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/02-asset-mgr/XhsSchemeAssetMgrPage.Designer.cs                       |   44 +
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/02-asset-mgr/XhsSchemeAssetMgrPage.cs                                |   19 
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/01-home/HomeXhsProjectPage.cs                                                  |    2 
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/04-scheme-mgr/02-comparison/XhsSchemeComparisonPage.Designer.cs      |   44 +
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/04-scheme-mgr/02-comparison/SelectSchemeDlg.Designer.cs              |   46 +
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/04-scheme-mgr/02-comparison/SelectSchemeDlg.cs                       |   10 
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/01-basic-info/XhsSchemeBasicInfoPage.Designer.cs                     |   44 +
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/04-scheme-mgr/01-create/CreateSchemeDlg.Designer.cs                  |   46 +
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/XhsSchemeMultiMgrPageUPdate.Designer.cs                              |  262 +++++++
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/03-hydraulic-simulation/XhsSchemeHydraulicSimulationPage.cs          |   19 
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/04-scheme-mgr/02-comparison/XhsSchemeComparisonPage.resx             |  120 +++
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/01-basic-info/XhsSchemeBasicInfoPage.cs                              |   19 
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/01-basic-info/XhsSchemeBasicInfoPage.resx                            |  120 +++
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/HStation.WinFrmUI.Xhs.Core.csproj                                              |   15 
 Desktop/HStation.Desktop.Xhs.Core/MainForm.Designer.cs                                                             |    3 
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/HStation.WinFrmUI.Xhs.Core.csproj.user                                         |    6 
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/04-scheme-mgr/01-create/CreateSchemeDlg.resx                         |  120 +++
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/02-asset-mgr/XhsSchemeAssetMgrPage.resx                              |  120 +++
 Desktop/HStation.Desktop.Xhs.Core/Program.cs                                                                       |    8 
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/03-hydraulic-simulation/XhsSchemeHydraulicSimulationPage.resx        |  120 +++
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/XhsSchemeMultiMgrPageUpdate.cs                                       |  432 ++++++++++++
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/03-hydraulic-simulation/XhsSchemeHydraulicSimulationPage.Designer.cs |   44 +
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/04-scheme-mgr/02-comparison/SelectSchemeDlg.resx                     |  120 +++
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/XhsSchemeMultiMgrPageUPdate.resx                                     |  246 +++++++
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/04-scheme-mgr/02-comparison/XhsSchemeComparisonPage.cs               |   19 
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/04-scheme-mgr/01-create/CreateSchemeDlg.cs                           |   10 
 27 files changed, 2,055 insertions(+), 9 deletions(-)

diff --git a/Desktop/HStation.Desktop.Xhs.Core/MainForm.Designer.cs b/Desktop/HStation.Desktop.Xhs.Core/MainForm.Designer.cs
index 81196e9..57298df 100644
--- a/Desktop/HStation.Desktop.Xhs.Core/MainForm.Designer.cs
+++ b/Desktop/HStation.Desktop.Xhs.Core/MainForm.Designer.cs
@@ -86,7 +86,7 @@
             tileNavPane.Location = new Point(0, 0);
             tileNavPane.Margin = new Padding(4, 5, 4, 5);
             tileNavPane.Name = "tileNavPane";
-            tileNavPane.Size = new Size(1699, 100);
+            tileNavPane.Size = new Size(1699, 84);
             tileNavPane.TabIndex = 0;
             tileNavPane.Text = "tileNavPane1";
             tileNavPane.ElementClick += tileNavPane_ElementClick;
@@ -253,6 +253,7 @@
             // tabbedView1
             // 
             tabbedView1.DocumentProperties.AllowPin = true;
+            tabbedView1.Style = DevExpress.XtraBars.Docking2010.Views.DockingViewStyle.Light;
             tabbedView1.DocumentSelected += tabbedView1_DocumentSelected;
             tabbedView1.DocumentAdded += tabbedView1_DocumentAdded;
             tabbedView1.DocumentActivated += tabbedView1_DocumentActivated;
diff --git a/Desktop/HStation.Desktop.Xhs.Core/MainForm.resx b/Desktop/HStation.Desktop.Xhs.Core/MainForm.resx
index 08ff5fd..c0a3e72 100644
--- a/Desktop/HStation.Desktop.Xhs.Core/MainForm.resx
+++ b/Desktop/HStation.Desktop.Xhs.Core/MainForm.resx
@@ -279,12 +279,12 @@
     <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>190, 17</value>
+    <value>259, 17</value>
   </metadata>
   <metadata name="dockManager1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
-    <value>325, 17</value>
+    <value>442, 17</value>
   </metadata>
   <metadata name="svgImg32Model.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
-    <value>469, 17</value>
+    <value>638, 17</value>
   </metadata>
 </root>
\ No newline at end of file
diff --git a/Desktop/HStation.Desktop.Xhs.Core/Program.cs b/Desktop/HStation.Desktop.Xhs.Core/Program.cs
index 05cf298..3128071 100644
--- a/Desktop/HStation.Desktop.Xhs.Core/Program.cs
+++ b/Desktop/HStation.Desktop.Xhs.Core/Program.cs
@@ -39,10 +39,10 @@
                 Application.SetCompatibleTextRenderingDefault(false);
 
                 //字体
-                // var font = new System.Drawing.Font("微软雅黑", 10);
-                // DevExpress.XtraEditors.WindowsFormsSettings.DefaultFont = font;
-                // DevExpress.XtraEditors.WindowsFormsSettings.DefaultMenuFont = font;
-                // DevExpress.Utils.AppearanceObject.DefaultFont = font;
+                var font = new System.Drawing.Font("微软雅黑", 10);
+                DevExpress.XtraEditors.WindowsFormsSettings.DefaultFont = font;
+                DevExpress.XtraEditors.WindowsFormsSettings.DefaultMenuFont = font;
+                DevExpress.Utils.AppearanceObject.DefaultFont = font;
 
                 //zh-Hans界面翻译
                 System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("zh-Hans");
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/01-home/HomeXhsProjectPage.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/01-home/HomeXhsProjectPage.cs
index 5f365f2..f0c6bea 100644
--- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/01-home/HomeXhsProjectPage.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/01-home/HomeXhsProjectPage.cs
@@ -111,7 +111,7 @@
 
             if (!IsExistPage(guid, true))
             {
-                var page = new XhsSchemeMultiMgrPage();
+                var page = new XhsSchemeMultiMgrPageUpdate();
                 await page.SetBindingData(obj.ID);
                 //var page = new XhsProjectSimulationMgrPage();
                 CreatePage(page, guid);
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/01-basic-info/XhsSchemeBasicInfoPage.Designer.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/01-basic-info/XhsSchemeBasicInfoPage.Designer.cs
new file mode 100644
index 0000000..04d5ef5
--- /dev/null
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/01-basic-info/XhsSchemeBasicInfoPage.Designer.cs
@@ -0,0 +1,44 @@
+锘縩amespace HStation.WinFrmUI
+{
+    partial class XhsSchemeBasicInfoPage
+    {
+        /// <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()
+        {
+            SuspendLayout();
+            // 
+            // XhsSchemeBasicInfoPage
+            // 
+            AutoScaleDimensions = new SizeF(10F, 22F);
+            AutoScaleMode = AutoScaleMode.Font;
+            Name = "XhsSchemeBasicInfoPage";
+            Size = new Size(1358, 923);
+            ResumeLayout(false);
+        }
+
+        #endregion
+    }
+}
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/01-basic-info/XhsSchemeBasicInfoPage.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/01-basic-info/XhsSchemeBasicInfoPage.cs
new file mode 100644
index 0000000..66f1c52
--- /dev/null
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/01-basic-info/XhsSchemeBasicInfoPage.cs
@@ -0,0 +1,19 @@
+锘縩amespace HStation.WinFrmUI
+{
+    public partial class XhsSchemeBasicInfoPage : DocumentPage
+    {
+        public XhsSchemeBasicInfoPage()
+        {
+            InitializeComponent(); 
+        }
+
+
+        /// <summary>
+        /// 鍒濆鍖栨暟鎹�
+        /// </summary>
+        public override void InitialDataSource()
+        {
+            base.InitialDataSource();
+        }
+    }
+}
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/01-basic-info/XhsSchemeBasicInfoPage.resx b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/01-basic-info/XhsSchemeBasicInfoPage.resx
new file mode 100644
index 0000000..af32865
--- /dev/null
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/01-basic-info/XhsSchemeBasicInfoPage.resx
@@ -0,0 +1,120 @@
+锘�<?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/HStation.WinFrmUI.Xhs.Core/03-scheme/02-asset-mgr/XhsSchemeAssetMgrPage.Designer.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/02-asset-mgr/XhsSchemeAssetMgrPage.Designer.cs
new file mode 100644
index 0000000..1535bb3
--- /dev/null
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/02-asset-mgr/XhsSchemeAssetMgrPage.Designer.cs
@@ -0,0 +1,44 @@
+锘縩amespace HStation.WinFrmUI
+{
+    partial class XhsSchemeAssetMgrPage
+    {
+        /// <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()
+        {
+            SuspendLayout();
+            // 
+            // XhsSchemeBasicInfoPage
+            // 
+            AutoScaleDimensions = new SizeF(10F, 22F);
+            AutoScaleMode = AutoScaleMode.Font;
+            Name = "XhsSchemeBasicInfoPage";
+            Size = new Size(1358, 923);
+            ResumeLayout(false);
+        }
+
+        #endregion
+    }
+}
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/02-asset-mgr/XhsSchemeAssetMgrPage.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/02-asset-mgr/XhsSchemeAssetMgrPage.cs
new file mode 100644
index 0000000..bc108ac
--- /dev/null
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/02-asset-mgr/XhsSchemeAssetMgrPage.cs
@@ -0,0 +1,19 @@
+锘縩amespace HStation.WinFrmUI
+{
+    public partial class XhsSchemeAssetMgrPage : DocumentPage
+    {
+        public XhsSchemeAssetMgrPage()
+        {
+            InitializeComponent(); 
+        }
+
+
+        /// <summary>
+        /// 鍒濆鍖栨暟鎹�
+        /// </summary>
+        public override void InitialDataSource()
+        {
+            base.InitialDataSource();
+        }
+    }
+}
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/02-asset-mgr/XhsSchemeAssetMgrPage.resx b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/02-asset-mgr/XhsSchemeAssetMgrPage.resx
new file mode 100644
index 0000000..af32865
--- /dev/null
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/02-asset-mgr/XhsSchemeAssetMgrPage.resx
@@ -0,0 +1,120 @@
+锘�<?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/HStation.WinFrmUI.Xhs.Core/03-scheme/03-hydraulic-simulation/XhsSchemeHydraulicSimulationPage.Designer.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/03-hydraulic-simulation/XhsSchemeHydraulicSimulationPage.Designer.cs
new file mode 100644
index 0000000..dece8b1
--- /dev/null
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/03-hydraulic-simulation/XhsSchemeHydraulicSimulationPage.Designer.cs
@@ -0,0 +1,44 @@
+锘縩amespace HStation.WinFrmUI
+{
+    partial class XhsSchemeHydraulicSimulationPage
+    {
+        /// <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()
+        {
+            SuspendLayout();
+            // 
+            // XhsSchemeBasicInfoPage
+            // 
+            AutoScaleDimensions = new SizeF(10F, 22F);
+            AutoScaleMode = AutoScaleMode.Font;
+            Name = "XhsSchemeBasicInfoPage";
+            Size = new Size(1358, 923);
+            ResumeLayout(false);
+        }
+
+        #endregion
+    }
+}
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/03-hydraulic-simulation/XhsSchemeHydraulicSimulationPage.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/03-hydraulic-simulation/XhsSchemeHydraulicSimulationPage.cs
new file mode 100644
index 0000000..26e6491
--- /dev/null
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/03-hydraulic-simulation/XhsSchemeHydraulicSimulationPage.cs
@@ -0,0 +1,19 @@
+锘縩amespace HStation.WinFrmUI
+{
+    public partial class XhsSchemeHydraulicSimulationPage : DocumentPage
+    {
+        public XhsSchemeHydraulicSimulationPage()
+        {
+            InitializeComponent(); 
+        }
+
+
+        /// <summary>
+        /// 鍒濆鍖栨暟鎹�
+        /// </summary>
+        public override void InitialDataSource()
+        {
+            base.InitialDataSource();
+        }
+    }
+}
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/03-hydraulic-simulation/XhsSchemeHydraulicSimulationPage.resx b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/03-hydraulic-simulation/XhsSchemeHydraulicSimulationPage.resx
new file mode 100644
index 0000000..af32865
--- /dev/null
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/03-hydraulic-simulation/XhsSchemeHydraulicSimulationPage.resx
@@ -0,0 +1,120 @@
+锘�<?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/HStation.WinFrmUI.Xhs.Core/03-scheme/04-scheme-mgr/01-create/CreateSchemeDlg.Designer.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/04-scheme-mgr/01-create/CreateSchemeDlg.Designer.cs
new file mode 100644
index 0000000..6566795
--- /dev/null
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/04-scheme-mgr/01-create/CreateSchemeDlg.Designer.cs
@@ -0,0 +1,46 @@
+锘縩amespace HStation.WinFrmUI
+{
+    partial class CreateSchemeDlg
+    {
+        /// <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()
+        {
+            SuspendLayout();
+            // 
+            // CreateSchemeDlg
+            // 
+            AutoScaleDimensions = new SizeF(10F, 22F);
+            AutoScaleMode = AutoScaleMode.Font;
+            ClientSize = new Size(1007, 800);
+            Name = "CreateSchemeDlg";
+            StartPosition = FormStartPosition.CenterScreen;
+            Text = "鍒涘缓鏂规";
+            ResumeLayout(false);
+        }
+
+        #endregion
+    }
+}
\ No newline at end of file
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/04-scheme-mgr/01-create/CreateSchemeDlg.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/04-scheme-mgr/01-create/CreateSchemeDlg.cs
new file mode 100644
index 0000000..762f5c7
--- /dev/null
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/04-scheme-mgr/01-create/CreateSchemeDlg.cs
@@ -0,0 +1,10 @@
+锘縩amespace HStation.WinFrmUI
+{
+    public partial class CreateSchemeDlg : DevExpress.XtraEditors.XtraForm
+    {
+        public CreateSchemeDlg()
+        {
+            InitializeComponent();
+        }
+    }
+}
\ No newline at end of file
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/04-scheme-mgr/01-create/CreateSchemeDlg.resx b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/04-scheme-mgr/01-create/CreateSchemeDlg.resx
new file mode 100644
index 0000000..af32865
--- /dev/null
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/04-scheme-mgr/01-create/CreateSchemeDlg.resx
@@ -0,0 +1,120 @@
+锘�<?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/HStation.WinFrmUI.Xhs.Core/03-scheme/04-scheme-mgr/02-comparison/SelectSchemeDlg.Designer.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/04-scheme-mgr/02-comparison/SelectSchemeDlg.Designer.cs
new file mode 100644
index 0000000..26e908d
--- /dev/null
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/04-scheme-mgr/02-comparison/SelectSchemeDlg.Designer.cs
@@ -0,0 +1,46 @@
+锘縩amespace HStation.WinFrmUI
+{
+    partial class SelectSchemeDlg
+    {
+        /// <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()
+        {
+            SuspendLayout();
+            // 
+            // SelectSchemeDlg
+            // 
+            AutoScaleDimensions = new SizeF(10F, 22F);
+            AutoScaleMode = AutoScaleMode.Font;
+            ClientSize = new Size(1007, 800);
+            Name = "SelectSchemeDlg";
+            StartPosition = FormStartPosition.CenterScreen;
+            Text = "閫夋嫨鏂规";
+            ResumeLayout(false);
+        }
+
+        #endregion
+    }
+}
\ No newline at end of file
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/04-scheme-mgr/02-comparison/SelectSchemeDlg.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/04-scheme-mgr/02-comparison/SelectSchemeDlg.cs
new file mode 100644
index 0000000..6851916
--- /dev/null
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/04-scheme-mgr/02-comparison/SelectSchemeDlg.cs
@@ -0,0 +1,10 @@
+锘縩amespace HStation.WinFrmUI
+{
+    public partial class SelectSchemeDlg : DevExpress.XtraEditors.XtraForm
+    {
+        public SelectSchemeDlg()
+        {
+            InitializeComponent();
+        }
+    }
+}
\ No newline at end of file
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/04-scheme-mgr/02-comparison/SelectSchemeDlg.resx b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/04-scheme-mgr/02-comparison/SelectSchemeDlg.resx
new file mode 100644
index 0000000..af32865
--- /dev/null
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/04-scheme-mgr/02-comparison/SelectSchemeDlg.resx
@@ -0,0 +1,120 @@
+锘�<?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/HStation.WinFrmUI.Xhs.Core/03-scheme/04-scheme-mgr/02-comparison/XhsSchemeComparisonPage.Designer.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/04-scheme-mgr/02-comparison/XhsSchemeComparisonPage.Designer.cs
new file mode 100644
index 0000000..152d85c
--- /dev/null
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/04-scheme-mgr/02-comparison/XhsSchemeComparisonPage.Designer.cs
@@ -0,0 +1,44 @@
+锘縩amespace HStation.WinFrmUI
+{
+    partial class XhsSchemeComparisonPage
+    {
+        /// <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()
+        {
+            SuspendLayout();
+            // 
+            // XhsSchemeBasicInfoPage
+            // 
+            AutoScaleDimensions = new SizeF(10F, 22F);
+            AutoScaleMode = AutoScaleMode.Font;
+            Name = "XhsSchemeBasicInfoPage";
+            Size = new Size(1358, 923);
+            ResumeLayout(false);
+        }
+
+        #endregion
+    }
+}
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/04-scheme-mgr/02-comparison/XhsSchemeComparisonPage.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/04-scheme-mgr/02-comparison/XhsSchemeComparisonPage.cs
new file mode 100644
index 0000000..7a9bc74
--- /dev/null
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/04-scheme-mgr/02-comparison/XhsSchemeComparisonPage.cs
@@ -0,0 +1,19 @@
+锘縩amespace HStation.WinFrmUI
+{
+    public partial class XhsSchemeComparisonPage : DocumentPage
+    {
+        public XhsSchemeComparisonPage()
+        {
+            InitializeComponent(); 
+        }
+
+
+        /// <summary>
+        /// 鍒濆鍖栨暟鎹�
+        /// </summary>
+        public override void InitialDataSource()
+        {
+            base.InitialDataSource();
+        }
+    }
+}
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/04-scheme-mgr/02-comparison/XhsSchemeComparisonPage.resx b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/04-scheme-mgr/02-comparison/XhsSchemeComparisonPage.resx
new file mode 100644
index 0000000..af32865
--- /dev/null
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/04-scheme-mgr/02-comparison/XhsSchemeComparisonPage.resx
@@ -0,0 +1,120 @@
+锘�<?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/HStation.WinFrmUI.Xhs.Core/03-scheme/XhsSchemeMultiMgrPageUPdate.Designer.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/XhsSchemeMultiMgrPageUPdate.Designer.cs
new file mode 100644
index 0000000..635bb29
--- /dev/null
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/XhsSchemeMultiMgrPageUPdate.Designer.cs
@@ -0,0 +1,262 @@
+锘縩amespace HStation.WinFrmUI
+{
+    partial class XhsSchemeMultiMgrPageUpdate
+    {
+        /// <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(XhsSchemeMultiMgrPageUpdate));
+            svgImg32 = new DevExpress.Utils.SvgImageCollection(components);
+            dockManager1 = new DevExpress.XtraBars.Docking.DockManager(components);
+            dockPanel1 = new DevExpress.XtraBars.Docking.DockPanel();
+            dockPanel1_Container = new DevExpress.XtraBars.Docking.ControlContainer();
+            sidePanelLeft_Bottom = new DevExpress.XtraEditors.SidePanel();
+            accordionControl1 = new DevExpress.XtraBars.Navigation.AccordionControl();
+            accBasicInfo = new DevExpress.XtraBars.Navigation.AccordionControlElement();
+            accAssetMgr = new DevExpress.XtraBars.Navigation.AccordionControlElement();
+            accHydraulicSimulation = new DevExpress.XtraBars.Navigation.AccordionControlElement();
+            accScheme = new DevExpress.XtraBars.Navigation.AccordionControlElement();
+            accCreateScheme = new DevExpress.XtraBars.Navigation.AccordionControlElement();
+            accSchemeComparison = new DevExpress.XtraBars.Navigation.AccordionControlElement();
+            sidePanelLeft_Top = new DevExpress.XtraEditors.SidePanel();
+            xhsSchemeMgrListCtrl1 = new XhsSchemeMgrListCtrl();
+            sidePanelRight_Bottom = new DevExpress.XtraEditors.SidePanel();
+            documentManager1 = new DevExpress.XtraBars.Docking2010.DocumentManager(components);
+            tabbedView1 = new DevExpress.XtraBars.Docking2010.Views.Tabbed.TabbedView(components);
+            ((ISupportInitialize)svgImg32).BeginInit();
+            ((ISupportInitialize)dockManager1).BeginInit();
+            dockPanel1.SuspendLayout();
+            dockPanel1_Container.SuspendLayout();
+            sidePanelLeft_Bottom.SuspendLayout();
+            ((ISupportInitialize)accordionControl1).BeginInit();
+            sidePanelLeft_Top.SuspendLayout();
+            ((ISupportInitialize)documentManager1).BeginInit();
+            ((ISupportInitialize)tabbedView1).BeginInit();
+            SuspendLayout();
+            // 
+            // svgImg32
+            // 
+            svgImg32.ImageSize = new Size(32, 32);
+            svgImg32.Add("productquickshippments", "image://svgimages/outlook inspired/productquickshippments.svg");
+            // 
+            // dockManager1
+            // 
+            dockManager1.DockingOptions.ShowCloseButton = false;
+            dockManager1.Form = this;
+            dockManager1.RootPanels.AddRange(new DevExpress.XtraBars.Docking.DockPanel[] { dockPanel1 });
+            dockManager1.Style = DevExpress.XtraBars.Docking2010.Views.DockingViewStyle.Light;
+            dockManager1.TopZIndexControls.AddRange(new string[] { "DevExpress.XtraBars.BarDockControl", "DevExpress.XtraBars.StandaloneBarDockControl", "System.Windows.Forms.MenuStrip", "System.Windows.Forms.StatusStrip", "System.Windows.Forms.StatusBar", "DevExpress.XtraBars.Ribbon.RibbonStatusBar", "DevExpress.XtraBars.Ribbon.RibbonControl", "DevExpress.XtraBars.Navigation.OfficeNavigationBar", "DevExpress.XtraBars.Navigation.TileNavPane", "DevExpress.XtraBars.TabFormControl", "DevExpress.XtraBars.FluentDesignSystem.FluentDesignFormControl", "DevExpress.XtraBars.ToolbarForm.ToolbarFormControl" });
+            // 
+            // dockPanel1
+            // 
+            dockPanel1.Controls.Add(dockPanel1_Container);
+            dockPanel1.Dock = DevExpress.XtraBars.Docking.DockingStyle.Left;
+            dockPanel1.ID = new Guid("cb448c2a-aea0-46f3-b657-46889850e2a7");
+            dockPanel1.Location = new Point(1, 2);
+            dockPanel1.Name = "dockPanel1";
+            dockPanel1.OriginalSize = new Size(300, 200);
+            dockPanel1.Size = new Size(300, 1049);
+            dockPanel1.Text = "鏂规鍒楄〃";
+            // 
+            // dockPanel1_Container
+            // 
+            dockPanel1_Container.Controls.Add(sidePanelLeft_Bottom);
+            dockPanel1_Container.Controls.Add(sidePanelLeft_Top);
+            dockPanel1_Container.Location = new Point(0, 34);
+            dockPanel1_Container.Name = "dockPanel1_Container";
+            dockPanel1_Container.Size = new Size(299, 1015);
+            dockPanel1_Container.TabIndex = 0;
+            // 
+            // sidePanelLeft_Bottom
+            // 
+            sidePanelLeft_Bottom.Controls.Add(accordionControl1);
+            sidePanelLeft_Bottom.Dock = DockStyle.Fill;
+            sidePanelLeft_Bottom.Location = new Point(0, 369);
+            sidePanelLeft_Bottom.Name = "sidePanelLeft_Bottom";
+            sidePanelLeft_Bottom.Size = new Size(299, 646);
+            sidePanelLeft_Bottom.TabIndex = 1;
+            sidePanelLeft_Bottom.Text = "sidePanel2";
+            // 
+            // accordionControl1
+            // 
+            accordionControl1.AnimationType = DevExpress.XtraBars.Navigation.AnimationType.Spline;
+            accordionControl1.Appearance.Group.Default.FontSizeDelta = 2;
+            accordionControl1.Appearance.Group.Default.ForeColor = DevExpress.LookAndFeel.DXSkinColors.ForeColors.Hyperlink;
+            accordionControl1.Appearance.Group.Default.Options.UseFont = true;
+            accordionControl1.Appearance.Group.Default.Options.UseForeColor = true;
+            accordionControl1.Appearance.Item.Default.FontSizeDelta = 1;
+            accordionControl1.Appearance.Item.Default.Options.UseFont = true;
+            accordionControl1.Dock = DockStyle.Fill;
+            accordionControl1.Elements.AddRange(new DevExpress.XtraBars.Navigation.AccordionControlElement[] { accBasicInfo, accAssetMgr, accHydraulicSimulation, accScheme });
+            accordionControl1.GroupHeight = 50;
+            accordionControl1.ItemHeight = 35;
+            accordionControl1.Location = new Point(0, 0);
+            accordionControl1.Name = "accordionControl1";
+            accordionControl1.OptionsHamburgerMenu.HighlightRootElements = DevExpress.Utils.DefaultBoolean.False;
+            accordionControl1.OptionsMinimizing.AllowFooterResizing = false;
+            accordionControl1.OptionsMinimizing.AllowMinimizeMode = DevExpress.Utils.DefaultBoolean.False;
+            accordionControl1.ScrollBarMode = DevExpress.XtraBars.Navigation.ScrollBarMode.Fluent;
+            accordionControl1.Size = new Size(299, 646);
+            accordionControl1.TabIndex = 0;
+            accordionControl1.ViewType = DevExpress.XtraBars.Navigation.AccordionControlViewType.HamburgerMenu;
+            accordionControl1.ElementClick += accordionControl1_ElementClick;
+            // 
+            // accBasicInfo
+            // 
+            accBasicInfo.Expanded = true;
+            accBasicInfo.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("accBasicInfo.ImageOptions.SvgImage");
+            accBasicInfo.Name = "accBasicInfo";
+            accBasicInfo.Style = DevExpress.XtraBars.Navigation.ElementStyle.Item;
+            accBasicInfo.Tag = "basic_info";
+            accBasicInfo.Text = "璇︾粏淇℃伅";
+            // 
+            // accAssetMgr
+            // 
+            accAssetMgr.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("accAssetMgr.ImageOptions.SvgImage");
+            accAssetMgr.Name = "accAssetMgr";
+            accAssetMgr.Style = DevExpress.XtraBars.Navigation.ElementStyle.Item;
+            accAssetMgr.Tag = "asset_mgr";
+            accAssetMgr.Text = "璁惧绠$悊";
+            // 
+            // accHydraulicSimulation
+            // 
+            accHydraulicSimulation.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("accHydraulicSimulation.ImageOptions.SvgImage");
+            accHydraulicSimulation.Name = "accHydraulicSimulation";
+            accHydraulicSimulation.Style = DevExpress.XtraBars.Navigation.ElementStyle.Item;
+            accHydraulicSimulation.Tag = "hydraulic_simulation";
+            accHydraulicSimulation.Text = "姘村姏妯℃嫙";
+            // 
+            // accScheme
+            // 
+            accScheme.Elements.AddRange(new DevExpress.XtraBars.Navigation.AccordionControlElement[] { accCreateScheme, accSchemeComparison });
+            accScheme.Expanded = true;
+            accScheme.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("accScheme.ImageOptions.SvgImage");
+            accScheme.Name = "accScheme";
+            accScheme.Text = "鏂规绠$悊";
+            // 
+            // accCreateScheme
+            // 
+            accCreateScheme.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("accCreateScheme.ImageOptions.SvgImage");
+            accCreateScheme.Name = "accCreateScheme";
+            accCreateScheme.Style = DevExpress.XtraBars.Navigation.ElementStyle.Item;
+            accCreateScheme.Tag = "create_scheme";
+            accCreateScheme.Text = "鍒涘缓鏂规";
+            // 
+            // accSchemeComparison
+            // 
+            accSchemeComparison.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("accSchemeComparison.ImageOptions.SvgImage");
+            accSchemeComparison.Name = "accSchemeComparison";
+            accSchemeComparison.Style = DevExpress.XtraBars.Navigation.ElementStyle.Item;
+            accSchemeComparison.Tag = "scheme_comparison";
+            accSchemeComparison.Text = "鏂规瀵规瘮";
+            // 
+            // sidePanelLeft_Top
+            // 
+            sidePanelLeft_Top.Controls.Add(xhsSchemeMgrListCtrl1);
+            sidePanelLeft_Top.Dock = DockStyle.Top;
+            sidePanelLeft_Top.Location = new Point(0, 0);
+            sidePanelLeft_Top.Name = "sidePanelLeft_Top";
+            sidePanelLeft_Top.Size = new Size(299, 369);
+            sidePanelLeft_Top.TabIndex = 0;
+            sidePanelLeft_Top.Text = "sidePanel1";
+            // 
+            // xhsSchemeMgrListCtrl1
+            // 
+            xhsSchemeMgrListCtrl1.Dock = DockStyle.Fill;
+            xhsSchemeMgrListCtrl1.Location = new Point(0, 0);
+            xhsSchemeMgrListCtrl1.Margin = new Padding(4, 5, 4, 5);
+            xhsSchemeMgrListCtrl1.Name = "xhsSchemeMgrListCtrl1";
+            xhsSchemeMgrListCtrl1.Size = new Size(299, 368);
+            xhsSchemeMgrListCtrl1.TabIndex = 0;
+            // 
+            // sidePanelRight_Bottom
+            // 
+            sidePanelRight_Bottom.Dock = DockStyle.Fill;
+            sidePanelRight_Bottom.Location = new Point(301, 2);
+            sidePanelRight_Bottom.Name = "sidePanelRight_Bottom";
+            sidePanelRight_Bottom.Size = new Size(1124, 1049);
+            sidePanelRight_Bottom.TabIndex = 3;
+            sidePanelRight_Bottom.Text = "sidePanel3";
+            // 
+            // documentManager1
+            // 
+            documentManager1.ContainerControl = this;
+            documentManager1.View = tabbedView1;
+            documentManager1.ViewCollection.AddRange(new DevExpress.XtraBars.Docking2010.Views.BaseView[] { tabbedView1 });
+            // 
+            // tabbedView1
+            // 
+            tabbedView1.Style = DevExpress.XtraBars.Docking2010.Views.DockingViewStyle.Light;
+            tabbedView1.DocumentSelected += tabbedView1_DocumentSelected;
+            tabbedView1.DocumentAdded += tabbedView1_DocumentAdded;
+            tabbedView1.DocumentActivated += tabbedView1_DocumentActivated;
+            tabbedView1.DocumentClosed += tabbedView1_DocumentClosed;
+            // 
+            // XhsSchemeMultiMgrPageUpdate
+            // 
+            Appearance.BackColor = SystemColors.Control;
+            Appearance.Options.UseBackColor = true;
+            AutoScaleDimensions = new SizeF(10F, 22F);
+            AutoScaleMode = AutoScaleMode.Font;
+            Controls.Add(sidePanelRight_Bottom);
+            Controls.Add(dockPanel1);
+            Margin = new Padding(6, 8, 6, 8);
+            Name = "XhsSchemeMultiMgrPageUpdate";
+            Padding = new Padding(1, 2, 1, 2);
+            Size = new Size(1426, 1053);
+            ((ISupportInitialize)svgImg32).EndInit();
+            ((ISupportInitialize)dockManager1).EndInit();
+            dockPanel1.ResumeLayout(false);
+            dockPanel1_Container.ResumeLayout(false);
+            sidePanelLeft_Bottom.ResumeLayout(false);
+            ((ISupportInitialize)accordionControl1).EndInit();
+            sidePanelLeft_Top.ResumeLayout(false);
+            ((ISupportInitialize)documentManager1).EndInit();
+            ((ISupportInitialize)tabbedView1).EndInit();
+            ResumeLayout(false);
+        }
+
+        #endregion
+        private DevExpress.Utils.SvgImageCollection svgImg32;
+        private DevExpress.XtraBars.Docking.DockManager dockManager1;
+        private DevExpress.XtraBars.Docking.DockPanel dockPanel1;
+        private DevExpress.XtraBars.Docking.ControlContainer dockPanel1_Container;
+        private DevExpress.XtraEditors.SidePanel sidePanelLeft_Bottom;
+        private DevExpress.XtraEditors.SidePanel sidePanelLeft_Top;
+        private DevExpress.XtraBars.Navigation.AccordionControl accordionControl1;
+        private DevExpress.XtraBars.Navigation.AccordionControlElement accBasicInfo;
+        private DevExpress.XtraBars.Navigation.AccordionControlElement accScheme;
+        private DevExpress.XtraBars.Navigation.AccordionControlElement accHydraulicSimulation;
+        private DevExpress.XtraBars.Navigation.AccordionControlElement accAssetMgr;
+        private DevExpress.XtraEditors.SidePanel sidePanelRight_Bottom;
+        private XhsSchemeMgrListCtrl xhsSchemeMgrListCtrl1;
+        private DevExpress.XtraBars.Navigation.AccordionControlElement accCreateScheme;
+        private DevExpress.XtraBars.Navigation.AccordionControlElement accSchemeComparison;
+        private DevExpress.XtraBars.Docking2010.DocumentManager documentManager1;
+        private DevExpress.XtraBars.Docking2010.Views.Tabbed.TabbedView tabbedView1;
+    }
+}
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/XhsSchemeMultiMgrPageUPdate.resx b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/XhsSchemeMultiMgrPageUPdate.resx
new file mode 100644
index 0000000..b7da992
--- /dev/null
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/XhsSchemeMultiMgrPageUPdate.resx
@@ -0,0 +1,246 @@
+锘�<?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="svgImg32.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>455, 17</value>
+  </metadata>
+  <metadata name="dockManager1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>259, 17</value>
+  </metadata>
+  <assembly alias="DevExpress.Data.v23.2" name="DevExpress.Data.v23.2, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
+  <data name="accBasicInfo.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
+        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAJoCAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
+        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
+        Y2U9InByZXNlcnZlIiBpZD0iSW5mb3JtYXRpb24iIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcg
+        MCAwIDMyIDMyIj4NCiAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5ZZWxsb3d7ZmlsbDojRkZCMTE1
+        O30KCS5CbHVle2ZpbGw6IzExNzdENzt9Cjwvc3R5bGU+DQogIDxwYXRoIGQ9Ik0yMSwxNGMtNSwwLTks
+        NC05LDljMCw1LDQsOSw5LDlzOS00LDktOUMzMCwxOCwyNiwxNCwyMSwxNHogTTIyLDI4aC0ydi02aDJW
+        Mjh6IE0yMiwyMGgtMnYtMmgyVjIweiIgY2xhc3M9IkJsdWUiIC8+DQogIDxwYXRoIGQ9Ik0xMCwyM2Mw
+        LTYuMSw0LjktMTEsMTEtMTFjMC4zLDAsMC43LDAsMSwwLjFWNEgzQzIuNCw0LDIsMy42LDIsM2MwLTAu
+        NiwwLjQtMSwxLTFoMTlWMWMwLTAuNi0wLjQtMS0xLTFIMyAgQzEuMywwLDAsMS4zLDAsM3YyMGMwLDEu
+        NywxLjMsMywzLDNoNy40QzEwLjIsMjUsMTAsMjQsMTAsMjN6IiBjbGFzcz0iWWVsbG93IiAvPg0KPC9z
+        dmc+Cw==
+</value>
+  </data>
+  <data name="accAssetMgr.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
+        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAAgCAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
+        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
+        Y2U9InByZXNlcnZlIiBpZD0iX3gzM19fVHJhZmZpY19MaWdodHMiIHN0eWxlPSJlbmFibGUtYmFja2dy
+        b3VuZDpuZXcgMCAwIDMyIDMyIj4NCiAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5ZZWxsb3d7Zmls
+        bDojRkZCMTE1O30KCS5SZWR7ZmlsbDojRDExQzFDO30KCS5HcmVlbntmaWxsOiMwMzlDMjM7fQo8L3N0
+        eWxlPg0KICA8Y2lyY2xlIGN4PSI5IiBjeT0iOSIgcj0iNyIgY2xhc3M9IkdyZWVuIiAvPg0KICA8Y2ly
+        Y2xlIGN4PSI5IiBjeT0iMjUiIHI9IjciIGNsYXNzPSJSZWQiIC8+DQogIDxjaXJjbGUgY3g9IjI1IiBj
+        eT0iOSIgcj0iNyIgY2xhc3M9IlllbGxvdyIgLz4NCjwvc3ZnPgs=
+</value>
+  </data>
+  <data name="accHydraulicSimulation.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
+        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAADwDAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
+        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
+        Y2U9InByZXNlcnZlIiBpZD0iQ2FsY3VsYXRlX1NoZWV0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6
+        bmV3IDAgMCAzMiAzMiI+DQogIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CgkuQmxhY2t7ZmlsbDojNzI3
+        MjcyO30KCS5CbHVle2ZpbGw6IzExNzdENzt9CgkuWWVsbG93e2ZpbGw6I0ZGQjExNTt9Cgkuc3Qwe29w
+        YWNpdHk6MC41O30KPC9zdHlsZT4NCiAgPHJlY3QgeD0iNiIgeT0iNiIgd2lkdGg9IjE2IiBoZWlnaHQ9
+        IjYiIGNsYXNzPSJCbHVlIiAvPg0KICA8cmVjdCB4PSIxOCIgeT0iMTQiIHdpZHRoPSI0IiBoZWlnaHQ9
+        IjQiIGNsYXNzPSJZZWxsb3ciIC8+DQogIDxwYXRoIGQ9Ik0xMCwxOEg2di00aDRWMTh6IE0xNiwxNGgt
+        NHY0aDRWMTR6IE0xMCwyMEg2djRoNFYyMHogTTE2LDIwaC00djRoNFYyMHogTTE2LDI2SDRWNGgyMHYx
+        NGgyVjMgIGMwLTAuNi0wLjQtMS0xLTFIM0MyLjQsMiwyLDIuNCwyLDN2MjRjMCwwLjYsMC40LDEsMSwx
+        aDEzVjI2eiIgY2xhc3M9IkJsYWNrIiAvPg0KICA8ZyBjbGFzcz0ic3QwIj4NCiAgICA8cGF0aCBkPSJN
+        MjQsMjRoLTZ2LTRoNlYyNHogTTMyLDIwaC02djRoNlYyMHogTTI0LDI2aC02djRoNlYyNnogTTMyLDI2
+        aC02djRoNlYyNnoiIGNsYXNzPSJCbGFjayIgLz4NCiAgPC9nPg0KPC9zdmc+Cw==
+</value>
+  </data>
+  <data name="accScheme.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
+        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAFsDAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
+        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
+        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
+        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkJsdWV7ZmlsbDojMTE3N0Q3O30KCS5H
+        cmVlbntmaWxsOiMwMzlDMjM7fQoJLlllbGxvd3tmaWxsOiNGRkIxMTU7fQoJLkJsYWNre2ZpbGw6Izcy
+        NzI3Mjt9CgkuV2hpdGV7ZmlsbDojRkZGRkZGO30KCS5SZWR7ZmlsbDojRDExQzFDO30KCS5zdDB7b3Bh
+        Y2l0eTowLjc1O30KPC9zdHlsZT4NCiAgPGcgaWQ9IkJyaWVmY2FzZSI+DQogICAgPHJlY3QgeD0iMTQi
+        IHk9IjE0IiB3aWR0aD0iNCIgaGVpZ2h0PSI0IiBjbGFzcz0iQmxhY2siIC8+DQogICAgPHBhdGggZD0i
+        TTIwLDE5YzAsMC41LTAuNSwxLTEsMWgtNmMtMC41LDAtMS0wLjUtMS0xdi0zSDJ2MTFjMCwwLjUsMC41
+        LDEsMSwxaDI2YzAuNSwwLDEtMC41LDEtMVYxNkgyMFYxOXoiIGNsYXNzPSJCbGFjayIgLz4NCiAgICA8
+        cGF0aCBkPSJNMjksOGgtN1Y1YzAtMC41LTAuNS0xLTEtMUgxMWMtMC41LDAtMSwwLjUtMSwxdjNIM0My
+        LjUsOCwyLDguNSwyLDl2NWgxMHYtMWMwLTAuNSwwLjUtMSwxLTFoNiAgIGMwLjUsMCwxLDAuNSwxLDF2
+        MWgxMFY5QzMwLDguNSwyOS41LDgsMjksOHogTTIwLDhoLThWNmg4Vjh6IiBjbGFzcz0iQmxhY2siIC8+
+        DQogIDwvZz4NCjwvc3ZnPgs=
+</value>
+  </data>
+  <data name="accCreateScheme.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
+        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAOsCAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
+        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
+        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
+        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9Cgku
+        WWVsbG93e2ZpbGw6I0ZGQjExNTt9CgkuQmx1ZXtmaWxsOiMxMTc3RDc7fQoJLlJlZHtmaWxsOiNEMTFD
+        MUM7fQoJLldoaXRle2ZpbGw6I0ZGRkZGRjt9CgkuR3JlZW57ZmlsbDojMDM5QzIzO30KCS5zdDB7Zmls
+        bDojNzI3MjcyO30KCS5zdDF7b3BhY2l0eTowLjU7fQoJLnN0MntvcGFjaXR5OjAuNzU7fQo8L3N0eWxl
+        Pg0KICA8ZyBpZD0iQWRkRmlsZSI+DQogICAgPHBhdGggZD0iTTE2LDI2SDZWNGgxOHYxNGgyVjNjMC0w
+        LjUtMC41LTEtMS0xSDVDNC41LDIsNCwyLjUsNCwzdjI0YzAsMC41LDAuNSwxLDEsMWgxMVYyNnoiIGNs
+        YXNzPSJCbGFjayIgLz4NCiAgICA8cG9seWdvbiBwb2ludHM9IjMwLDI0IDI2LDI0IDI2LDIwIDIyLDIw
+        IDIyLDI0IDE4LDI0IDE4LDI4IDIyLDI4IDIyLDMyIDI2LDMyIDI2LDI4IDMwLDI4ICAiIGNsYXNzPSJH
+        cmVlbiIgLz4NCiAgPC9nPg0KPC9zdmc+Cw==
+</value>
+  </data>
+  <data name="accSchemeComparison.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
+        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAGoCAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
+        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
+        Y2U9InByZXNlcnZlIiBpZD0iR3JvdXAiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDMy
+        IDMyIj4NCiAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5CbHVle2ZpbGw6IzExNzdENzt9CgkuQmxh
+        Y2t7ZmlsbDojNzI3MjcyO30KPC9zdHlsZT4NCiAgPHBhdGggZD0iTTEzLDEyaDE2YzAuNSwwLDEsMC40
+        LDEsMXYxNmMwLDAuNS0wLjUsMS0xLDFIMTNjLTAuNiwwLTEtMC41LTEtMVYxM0MxMiwxMi40LDEyLjQs
+        MTIsMTMsMTJ6IE0xMCwxMSAgYzAtMC41LDAuNS0xLDEtMWg5VjNjMC0wLjUtMC41LTEtMS0xSDNDMi41
+        LDIsMiwyLjUsMiwzdjE2YzAsMC41LDAuNSwxLDEsMWg3VjExeiIgY2xhc3M9IkJsdWUiIC8+DQogIDxw
+        YXRoIGQ9Ik0zMCwydjZoLTJWNGgtNFYySDMweiBNOCwzMHYtMkg0di00SDJ2Nkg4eiIgY2xhc3M9IkJs
+        YWNrIiAvPg0KPC9zdmc+Cw==
+</value>
+  </data>
+  <metadata name="documentManager1.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/HStation.WinFrmUI.Xhs.Core/03-scheme/XhsSchemeMultiMgrPageUpdate.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/XhsSchemeMultiMgrPageUpdate.cs
new file mode 100644
index 0000000..df2de1c
--- /dev/null
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/XhsSchemeMultiMgrPageUpdate.cs
@@ -0,0 +1,432 @@
+锘縰sing DevExpress.XtraBars.Docking;
+using DevExpress.XtraBars.Docking2010.Views;
+using Yw.WinFrmUI.Page;
+
+namespace HStation.WinFrmUI
+{
+    public partial class XhsSchemeMultiMgrPageUpdate : DocumentPage
+    {
+        public XhsSchemeMultiMgrPageUpdate()
+        {
+            InitializeComponent();
+            this.PageTitle.Caption = "椤圭洰鏂规";
+            this.PageTitle.HeaderSvgImage = this.svgImg32[0];
+            this.PageTitle.SvgImageSize = new Size(24, 24);
+
+        }
+
+        private XhsProjectStdDto _project = null;
+        private Yw.Model.HydroModelInfo _hydroInfo = null;
+
+        /// <summary>
+        /// 鍒濆鍖栨暟鎹簮
+        /// </summary>
+        public override void InitialDataSource()
+        {
+            base.InitialDataSource();
+        }
+
+        /// <summary>
+        /// 缁戝畾鏁版嵁
+        /// </summary>
+        /// <param name="projectId">椤圭洰id</param>
+        public async Task SetBindingData(long projectId)
+        {
+            this.xhsSchemeMgrListCtrl1.SetBindingData(projectId);
+            _project = await new BLL.XhsProjectStd().GetByID(projectId);
+            this.PageTitle.Caption = $"{_project?.Name}\r\n鏂规绠$悊";
+            var projectSite = await new BLL.XhsProjectSiteStd().GetDefaultByProjectID(_project.ID);
+            if (projectSite == null)
+            {
+                return;
+            }
+
+            var relation = await new Yw.BLL.HydroModelRelation()
+                .GetDefaultByObjectTypeAndObjectIDOfPurpose(HStation.Xhs.DataType.XhsProjectSite, projectSite.ID, Yw.Bimface.Purpose.Simulation);
+            if (relation == null)
+            {
+                return;
+            }
+
+            _hydroInfo = await new Yw.BLL.HydroModelInfo().GetByID(relation.ModelID);
+        }
+
+
+        //鍔熻兘鐐瑰嚮
+        private void accordionControl1_ElementClick(object sender, DevExpress.XtraBars.Navigation.ElementClickEventArgs e)
+        {
+            var tag = e.Element.Tag;
+            if (tag is not string code)
+                return;
+
+            var svg_image_size = new Size(24, 24);
+            switch (code)
+            {
+                case "basic_info":
+                    {
+                        var guid = new PageGuid()
+                        {
+                            Modular = this.PageGuid.Modular,
+                            MoudingType = eMoudingType.Tab,
+                            Function = "basic_info",
+                        };
+                        if (!IsExistPage(guid, true))
+                        {
+                            var page = new XhsSchemeBasicInfoPage();
+                            page.PageTitle.Caption = e.Element.Text; 
+                            page.PageTitle.HeaderSvgImage = e.Element.ImageOptions.SvgImage;
+                            page.PageTitle.SvgImageSize = svg_image_size;
+                            CreatePage(page, guid);
+                        }
+                    }
+                    break;
+                case "asset_mgr":
+                    {
+                        var guid = new PageGuid()
+                        {
+                            Modular = this.PageGuid.Modular,
+                            MoudingType = eMoudingType.Tab,
+                            Function = "asset_mgr",
+                        };
+                        if (!IsExistPage(guid, true))
+                        {
+                            var page = new XhsSchemeAssetMgrPage();
+                            page.PageTitle.Caption = e.Element.Text;
+                            page.PageTitle.HeaderSvgImage = e.Element.ImageOptions.SvgImage;
+                            page.PageTitle.SvgImageSize = svg_image_size;
+                            CreatePage(page, guid);
+                        }
+                    }
+                    break;
+                case "hydraulic_simulation":
+                    {
+                        var guid = new PageGuid()
+                        {
+                            Modular = this.PageGuid.Modular,
+                            MoudingType = eMoudingType.Tab,
+                            Function = "hydraulic_simulation",
+                        };
+                        if (!IsExistPage(guid, true))
+                        {
+                            var page = new XhsSchemeHydraulicSimulationPage();
+                            page.PageTitle.Caption = e.Element.Text; 
+                            page.PageTitle.HeaderSvgImage = e.Element.ImageOptions.SvgImage;
+                            page.PageTitle.SvgImageSize = svg_image_size;
+                            CreatePage(page, guid);
+                        }
+                    }
+                    break;
+                case "create_scheme":
+                    {
+                        var dlg=new CreateSchemeDlg();  
+                        dlg.ShowDialog();
+                    }
+                    break;
+                case "scheme_comparison":
+                    {
+                        var guid = new PageGuid()
+                        {
+                            Modular = this.PageGuid.Modular,
+                            MoudingType = eMoudingType.Tab,
+                            Function = "scheme_comparison",
+                        };
+                        if (!IsExistPage(guid, true))
+                        {
+                            var page = new XhsSchemeComparisonPage();
+                            page.PageTitle.Caption = e.Element.Text;
+                            page.PageTitle.HeaderSvgImage = e.Element.ImageOptions.SvgImage;
+                            page.PageTitle.SvgImageSize = svg_image_size;
+                            CreatePage(page, guid);
+                        }
+                    }
+                    break;
+                default:
+                    break;
+            }
+        }
+
+        #region TabbedView 鐩稿叧浜嬩欢澶勭悊绋嬪簭
+
+        //閫変腑
+        private void tabbedView1_DocumentSelected(object sender, DocumentEventArgs e)
+        {
+            if (e.Document == null)
+                return;
+            var surfaceGuid = e.Document.Tag as PageGuid;
+            if (surfaceGuid == null)
+                return;
+        }
+
+        //娣诲姞
+        private void tabbedView1_DocumentAdded(object sender, DocumentEventArgs e)
+        {
+        }
+
+        //婵�娲�
+        private void tabbedView1_DocumentActivated(object sender, DocumentEventArgs e)
+        {
+            var page = e.Document.Control as DocumentPage;
+            if (page == null)
+                return;
+        }
+
+        //鍏抽棴 姝ゆ椂鎺т欢宸茬粡涓虹┖
+        private void tabbedView1_DocumentClosed(object sender, DocumentEventArgs e)
+        {
+        }
+
+        #endregion TabbedView 鐩稿叧浜嬩欢澶勭悊绋嬪簭
+
+        #region Page
+
+        //鏄惁瀛樺湪Page
+        private new bool IsExistPage(PageGuid pguid, bool isActivePage)
+        {
+            if (pguid == null)
+            {
+                return false;
+            }
+            if (this.dockManager1.Panels != null && this.dockManager1.Panels.Count > 0)
+            {
+                foreach (DockPanel panel in this.dockManager1.Panels)
+                {
+                    if (panel.Tag != null)
+                    {
+                        if (panel.Tag is PageGuid)
+                        {
+                            if ((panel.Tag as PageGuid).ToString() == pguid.ToString())
+                            {
+                                if (isActivePage)
+                                {
+                                    panel.Show();
+                                }
+                                return true;
+                            }
+                        }
+                    }
+                }
+            }
+
+            if (this.tabbedView1.Documents != null && this.tabbedView1.Documents.Count > 0)
+            {
+                foreach (BaseDocument doc in this.tabbedView1.Documents)
+                {
+                    if (doc.Tag != null)
+                    {
+                        if (doc.Tag is PageGuid)
+                        {
+                            if ((doc.Tag as PageGuid).ToString() == pguid.ToString())
+                            {
+                                if (isActivePage)
+                                {
+                                    this.tabbedView1.Controller.Activate(doc);
+                                }
+                                return true;
+                            }
+                        }
+                    }
+                }
+            }
+
+            return false;
+        }
+
+        //鏇存柊鏁版嵁
+        private new void RefreshPageData(PageGuid pguid)
+        {
+            if (pguid == null)
+            {
+                return;
+            }
+            if (this.dockManager1.Panels != null && this.dockManager1.Panels.Count > 0)
+            {
+                var panel = this.dockManager1.Panels.ToList().Find(x => x.Tag != null && x.Tag is PageGuid && (x.Tag as PageGuid).ToString() == pguid.ToString());
+                if (panel != null)
+                {
+                    if (panel.ControlContainer.Controls.Count > 0)
+                    {
+                        var page = panel.ControlContainer.Controls[0] as DocumentPage;
+                        if (page != null)
+                        {
+                            page.RefreshData();
+                        }
+                    }
+                    return;
+                }
+            }
+
+            if (this.tabbedView1.Documents != null && this.tabbedView1.Documents.Count > 0)
+            {
+                var doc = this.tabbedView1.Documents.ToList().Find(x => x.Tag != null && x.Tag is PageGuid && (x.Tag as PageGuid).ToString() == pguid.ToString());
+                if (doc != null)
+                {
+                    var page = doc.Control as DocumentPage;
+                    if (page != null)
+                    {
+                        page.RefreshData();
+                    }
+                    return;
+                }
+            }
+        }
+
+        //鏇存柊PageTitle
+        private new void UpdatePageTitle(PageGuid pguid, PageTitle title)
+        {
+            if (pguid == null || title == null)
+                return;
+
+            if (this.dockManager1.Panels != null && this.dockManager1.Panels.Count > 0)
+            {
+                var panel = this.dockManager1.Panels.ToList().Find(x => x.Tag != null && x.Tag is PageGuid && (x.Tag as PageGuid).ToString() == pguid.ToString());
+                if (panel != null)
+                {
+                    panel.Text = title.Caption;
+                    panel.ImageOptions.Image = title.HeaderImage;
+                    panel.ImageOptions.SvgImage = title.HeaderSvgImage;
+                    panel.ImageOptions.SvgImageSize = title.SvgImageSize;
+                    if (panel.ControlContainer.Controls.Count > 0)
+                    {
+                        var page = panel.ControlContainer.Controls[0] as DocumentPage;
+                        if (page != null)
+                        {
+                            page.PageTitle = title;
+                        }
+                    }
+                    return;
+                }
+            }
+
+            if (this.tabbedView1.Documents != null && this.tabbedView1.Documents.Count > 0)
+            {
+                var doc = this.tabbedView1.Documents.ToList().Find(x => x.Tag != null && x.Tag is PageGuid && (x.Tag as PageGuid).ToString() == pguid.ToString());
+                if (doc != null)
+                {
+                    doc.Caption = title.Caption;
+                    doc.ImageOptions.Image = title.HeaderImage;
+                    doc.ImageOptions.SvgImage = title.HeaderSvgImage;
+                    doc.ImageOptions.SvgImageSize = title.SvgImageSize;
+                    var page = doc.Control as DocumentPage;
+                    if (page != null)
+                    {
+                        page.PageTitle = title;
+                    }
+                    return;
+                }
+            }
+        }
+
+        //鍒涘缓Page
+        private new bool CreatePage(DocumentPage page, PageGuid pguid)
+        {
+            if (page == null || pguid == null)
+            {
+                return false;
+            }
+            page.PageGuid = pguid;
+            page.Dock = DockStyle.Fill;
+            page.IsExistPageEvent += IsExistPage;
+            page.CreatePageEvent += CreatePage;
+            page.RefreshPageDataEvent += RefreshPageData;
+            page.UpdatePageTitleEvent += UpdatePageTitle;
+            page.ClosePageEvent += ClosePage;
+            page.RegistEvents();
+            switch (pguid.MoudingType)
+            {
+                case eMoudingType.Dock:
+                    {
+                        this.dockManager1.BeginUpdate();
+                        DockPanel docPnl = null;
+                        if (pguid.DockType == eDockType.Left)
+                        {
+                            docPnl = this.dockManager1.AddPanel(DockingStyle.Left);
+                        }
+                        else if (pguid.DockType == eDockType.Right)
+                        {
+                            docPnl = this.dockManager1.AddPanel(DockingStyle.Right);
+                        }
+
+                        docPnl.Footer = Directory.GetCurrentDirectory();
+                        if (page.PageTitle != null)
+                        {
+                            docPnl.Text = page.PageTitle.Caption;
+                            docPnl.ImageOptions.Image = page.PageTitle.HeaderImage;
+                            docPnl.ImageOptions.SvgImage = page.PageTitle.HeaderSvgImage;
+                            docPnl.ImageOptions.SvgImageSize = page.PageTitle.SvgImageSize;
+                            docPnl.Options.ShowCloseButton = page.PageTitle.AllowClose;
+                        }
+                        docPnl.ControlContainer.Controls.Add(page);
+                        docPnl.Tag = pguid;
+                        this.dockManager1.EndUpdate();
+                        docPnl.Show();
+                    }
+                    break;
+
+                case eMoudingType.Tab:
+                    {
+                        this.tabbedView1.BeginUpdate();
+                        var doc = this.tabbedView1.AddDocument(page);
+                        doc.Footer = Directory.GetCurrentDirectory();
+                        if (page.PageTitle != null)
+                        {
+                            doc.Caption = page.PageTitle.Caption;
+                            doc.ImageOptions.Image = page.PageTitle.HeaderImage;
+                            doc.ImageOptions.SvgImage = page.PageTitle.HeaderSvgImage;
+                            doc.ImageOptions.SvgImageSize = page.PageTitle.SvgImageSize;
+                            doc.Properties.AllowClose = page.PageTitle.AllowClose ? DevExpress.Utils.DefaultBoolean.True : DevExpress.Utils.DefaultBoolean.False;
+                        }
+                        doc.Tag = pguid;
+                        this.tabbedView1.EndUpdate();
+                        this.tabbedView1.Controller.Activate(doc);
+                    }
+                    break;
+
+                default: break;
+            }
+            page.InitialDataSource();
+            return true;
+        }
+
+        //鍏抽棴Page
+        private new void ClosePage(PageGuid pguid)
+        {
+            switch (pguid.MoudingType)
+            {
+                case eMoudingType.Dock:
+                    {
+                        if (this.dockManager1.Panels != null && this.dockManager1.Panels.Count > 0)
+                        {
+                            var panel = this.dockManager1.Panels.ToList().Find(x => x.Tag != null && x.Tag is PageGuid && (x.Tag as PageGuid).ToString() == pguid.ToString());
+                            if (panel != null)
+                            {
+                                if (panel.Visibility != DockVisibility.Hidden)
+                                    panel.Close();//浼氳Е鍙戞鍦ㄥ叧闂拰鍏抽棴浜嬩欢
+                                                  //this.dockManager1.RemovePanel(panel);//涓嶄細瑙﹀彂姝e湪鍏抽棴鍜屽叧闂簨浠�
+                            }
+                        }
+                    }
+                    break;
+
+                case eMoudingType.Tab:
+                    {
+                        if (this.tabbedView1.Documents != null && this.tabbedView1.Documents.Count > 0)
+                        {
+                            var doc = this.tabbedView1.Documents.ToList().Find(x => x.Tag != null && x.Tag is PageGuid && (x.Tag as PageGuid).ToString() == pguid.ToString());
+                            if (doc != null)
+                            {
+                                this.tabbedView1.Controller.Close(doc);//浼氳Е鍙戞鍦ㄥ叧闂拰鍏抽棴浜嬩欢
+                            }
+                        }
+                    }
+                    break;
+
+                default: break;
+            }
+        }
+
+        #endregion Page
+
+
+
+    }
+}
\ No newline at end of file
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/HStation.WinFrmUI.Xhs.Core.csproj b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/HStation.WinFrmUI.Xhs.Core.csproj
index 950482a..c9c206f 100644
--- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/HStation.WinFrmUI.Xhs.Core.csproj
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/HStation.WinFrmUI.Xhs.Core.csproj
@@ -71,6 +71,21 @@
     <Compile Update="02-project\04-dlg\EditProjectDlg.cs">
       <SubType>Form</SubType>
     </Compile>
+    <Compile Update="03-scheme\03-hydraulic-simulation\XhsSchemeHydraulicSimulationPage.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="03-scheme\02-asset-mgr\XhsSchemeAssetMgrPage.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="03-scheme\04-scheme-mgr\02-comparison\SelectSchemeDlg.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Update="03-scheme\04-scheme-mgr\02-comparison\XhsSchemeComparisonPage.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="03-scheme\XhsSchemeMultiMgrPageUpdate.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
     <Compile Update="03-scheme\XhsSchemeMultiMgrPage.cs">
       <SubType>UserControl</SubType>
     </Compile>
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 ca955ad..0a7af77 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
@@ -40,6 +40,12 @@
     <Compile Update="02-project\04-dlg\AddProjectDlg.cs">
       <SubType>Form</SubType>
     </Compile>
+    <Compile Update="03-scheme\01-basic-info\XhsSchemeBasicInfoPage.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="03-scheme\04-scheme-mgr\01-create\CreateSchemeDlg.cs">
+      <SubType>Form</SubType>
+    </Compile>
     <Compile Update="03-scheme\XhsSchemeMgrListCtrl.cs">
       <SubType>UserControl</SubType>
     </Compile>

--
Gitblit v1.9.3