lixiaojun
2024-07-19 2415c4eedaa96532ffc7eb1c7e5d018106115bf4
导入流程开发
已删除8个文件
已重命名14个文件
已复制7个文件
已修改18个文件
已添加38个文件
5521 ■■■■ 文件已修改
Desktop/HStation.Desktop.Xhs.Core/DbFirstHelper.cs 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Desktop/HStation.Desktop.Xhs.Core/HStation.Desktop.Xhs.Core.csproj 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Desktop/HStation.Desktop.Xhs.Core/Login/LoginFrm.Designer.cs 151 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Desktop/HStation.Desktop.Xhs.Core/MainForm.Designer.cs 216 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Desktop/HStation.Desktop.Xhs.Core/MainForm.cs 439 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Desktop/HStation.Desktop.Xhs.Core/MainForm.resx 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Desktop/HStation.Desktop.Xhs.Core/Program.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Desktop/HStation.Desktop.Xhs.Core/Properties/Resources.Designer.cs 73 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Desktop/HStation.Desktop.Xhs.Core/Properties/Resources.resx 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Desktop/HStation.Desktop.Xhs.Core/Resources/loginbg.png 补丁 | 查看 | 原始文档 | blame | 历史
Desktop/HStation.Desktop.Xhs.Core/TestHelper.cs 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Service/HStation.Service.Xhs.Core/00-core/Purpose.cs 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Service/HStation.Service.Xhs.Core/01-entity/XhsProject.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Service/HStation.Service.Xhs.Core/03-settings/01-paras/00-core/Paras_Xhs.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Service/HStation.Service.Xhs.Core/03-settings/01-paras/03-file/Paras_Xhs_File.cs 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Service/HStation.Service.Xhs.Core/04-dal/02-postgresql/XhsProject.cs 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Service/HStation.Service.Xhs.Core/04-dal/03-sqlite/XhsProject.cs 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Service/HStation.Service.Xhs.Core/paras_xhs_settings.json 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Bimface.Core/HStation.WinFrmUI.Bimface.Core.csproj 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/01-home/01-project/HomeXhsProjectTreeListCtrl.Designer.cs 297 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/01-home/01-project/HomeXhsProjectTreeListCtrl.cs 120 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/01-home/01-project/HomeXhsProjectTreeListCtrl.resx 231 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/01-home/01-project/HomeXhsProjectTreeViewModel.cs 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/01-home/02-map/IMapViewProjectListContainer.cs 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/01-home/02-map/IMapViewProjectListEvents.cs 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/01-home/02-map/MapProjectViewModel.cs 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/01-home/02-map/MapViewProjectListCallBackObj.cs 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/01-home/02-map/MapViewProjectListContainer.Designer.cs 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/01-home/02-map/MapViewProjectListContainer.cs 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/01-home/02-map/MapViewProjectListContainer.resx 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/01-home/02-map/MapViewProjectListUrlHelper.cs 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/01-home/03-property/HomeXhsProjectPropertyCtrl.Designer.cs 290 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/01-home/03-property/HomeXhsProjectPropertyCtrl.cs 239 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/01-home/03-property/HomeXhsProjectPropertyCtrl.resx 217 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/01-home/03-property/HomeXhsProjectPropertyViewModel.cs 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/01-home/HomeXhsProjectPage.Designer.cs 167 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/01-home/HomeXhsProjectPage.cs 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/01-home/HomeXhsProjectPage.resx 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/01-import/GenerateXhsProjectCtrl.Designer.cs 128 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/01-import/GenerateXhsProjectCtrl.cs 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/01-import/GenerateXhsProjectCtrl.resx 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/01-import/ImportXhsProjectCompletedCtrl.Designer.cs 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/01-import/ImportXhsProjectCompletedCtrl.cs 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/01-import/ImportXhsProjectCompletedCtrl.resx 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/01-import/ImportXhsProjectDlg.Designer.cs 391 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/01-import/ImportXhsProjectDlg.cs 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/01-import/ImportXhsProjectDlg.resx 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/01-import/ImportXhsProjectHelper.cs 214 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/01-import/ImportXhsProjectViewModel.cs 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/01-import/InputXhsProjectBasicInfoCtrl.Designer.cs 269 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/01-import/InputXhsProjectBasicInfoCtrl.cs 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/01-import/InputXhsProjectBasicInfoCtrl.resx 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/01-import/SelectXhsProjectModelFileCtrl.Designer.cs 125 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/01-import/SelectXhsProjectModelFileCtrl.cs 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/01-import/SelectXhsProjectModelFileCtrl.resx 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/01-import/SetXhsProjectMapLocationCtrl.Designer.cs 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/01-import/SetXhsProjectMapLocationCtrl.cs 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/01-import/SetXhsProjectMapLocationCtrl.resx 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-ViewModel/XhsProject/AmapLocationViewModel.cs 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-ViewModel/XhsProject/FixationReceivedViewModel.cs 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-ViewModel/XhsProject/XhsProjectPropertyGridViewModel.cs 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/04-HomePageMainPanel/HomePageMainPanel.Designer.cs 167 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/04-HomePageMainPanel/HomePageMainPanel.cs 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/04-HomePageMainPanel/XhsProjectTreeList.Designer.cs 157 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/04-HomePageMainPanel/XhsProjectTreeList.cs 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/05-Project/01-ExtractHelper/ExtractHelper.cs 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/05-Project/02-_UserControls/XhsProjectUserControl.Designer.cs 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/05-Project/02-_UserControls/XhsProjectUserControl.cs 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/05-Project/02-_UserControls/XhsProjectUserControl.resx 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/GlobalUsings.cs 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/HStation.WinFrmUI.Xhs.Core.csproj 47 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/HStation.WinFrmUI.Xhs.Core.csproj.user 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Core/07-sorter/DisplayUnitAttribute.cs 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Core/07-sorter/MultiTextAttribute.cs 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Core/07-sorter/PropertySorter.cs 52 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Core/07-sorter/ShowEditorAttribute.cs 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Map.Core/00-core/MapUrlHelper.cs 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Map.Core/03-SetSimpleMarker/IMapSetSimpleMarkerContainer.cs 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Map.Core/03-SetSimpleMarker/IMapSetSimpleMarkerEvents.cs 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Map.Core/03-SetSimpleMarker/MapSetSimpleMarkerCallBackObj.cs 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Map.Core/03-SetSimpleMarker/MapSetSimpleMarkerContainer.Designer.cs 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Map.Core/03-SetSimpleMarker/MapSetSimpleMarkerContainer.cs 96 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Map.Core/03-SetSimpleMarker/MapSetSimpleMarkerContainer.resx 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Map.Core/Yw.WinFrmUI.Map.Core.csproj 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Map.Core/map/gaode/html/SetSimpleMarker.html 168 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Desktop/HStation.Desktop.Xhs.Core/DbFirstHelper.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace HStation.Desktop
{
    /// <summary>
    /// dbfirst
    /// </summary>
    public class DbFirstHelper
    {
        /// <summary>
        /// åˆå§‹åŒ–
        /// </summary>
        public static void Initial()
        {
            new BLL.XhsDbFirstHelper().Initial();
            new Yw.BLL.MapDbFirstHelper().Initial();
        }
    }
}
Desktop/HStation.Desktop.Xhs.Core/HStation.Desktop.Xhs.Core.csproj
@@ -21,6 +21,18 @@
    <Compile Update="Login\LoginFrm.cs">
      <SubType>Form</SubType>
    </Compile>
    <Compile Update="Properties\Resources.Designer.cs">
      <DesignTime>True</DesignTime>
      <AutoGen>True</AutoGen>
      <DependentUpon>Resources.resx</DependentUpon>
    </Compile>
  </ItemGroup>
  <ItemGroup>
    <EmbeddedResource Update="Properties\Resources.resx">
      <Generator>ResXFileCodeGenerator</Generator>
      <LastGenOutput>Resources.Designer.cs</LastGenOutput>
    </EmbeddedResource>
  </ItemGroup>
</Project>
Desktop/HStation.Desktop.Xhs.Core/Login/LoginFrm.Designer.cs
@@ -28,21 +28,21 @@
        /// </summary>
        private void InitializeComponent()
        {
            DevExpress.XtraLayout.ColumnDefinition columnDefinition1 = new DevExpress.XtraLayout.ColumnDefinition();
            DevExpress.XtraLayout.ColumnDefinition columnDefinition2 = new DevExpress.XtraLayout.ColumnDefinition();
            DevExpress.XtraLayout.RowDefinition rowDefinition1 = new DevExpress.XtraLayout.RowDefinition();
            DevExpress.XtraLayout.RowDefinition rowDefinition2 = new DevExpress.XtraLayout.RowDefinition();
            DevExpress.XtraLayout.RowDefinition rowDefinition3 = new DevExpress.XtraLayout.RowDefinition();
            DevExpress.XtraLayout.RowDefinition rowDefinition4 = new DevExpress.XtraLayout.RowDefinition();
            DevExpress.XtraLayout.RowDefinition rowDefinition5 = new DevExpress.XtraLayout.RowDefinition();
            DevExpress.XtraLayout.ColumnDefinition columnDefinition3 = new DevExpress.XtraLayout.ColumnDefinition();
            DevExpress.XtraLayout.ColumnDefinition columnDefinition4 = new DevExpress.XtraLayout.ColumnDefinition();
            DevExpress.XtraLayout.ColumnDefinition columnDefinition5 = new DevExpress.XtraLayout.ColumnDefinition();
            DevExpress.XtraLayout.RowDefinition rowDefinition6 = new DevExpress.XtraLayout.RowDefinition();
            DevExpress.XtraLayout.RowDefinition rowDefinition7 = new DevExpress.XtraLayout.RowDefinition();
            DevExpress.XtraLayout.RowDefinition rowDefinition8 = new DevExpress.XtraLayout.RowDefinition();
            DevExpress.XtraLayout.RowDefinition rowDefinition9 = new DevExpress.XtraLayout.RowDefinition();
            DevExpress.XtraLayout.RowDefinition rowDefinition10 = new DevExpress.XtraLayout.RowDefinition();
            DevExpress.XtraLayout.ColumnDefinition columnDefinition6 = new DevExpress.XtraLayout.ColumnDefinition();
            DevExpress.XtraLayout.ColumnDefinition columnDefinition7 = new DevExpress.XtraLayout.ColumnDefinition();
            DevExpress.XtraLayout.RowDefinition rowDefinition11 = new DevExpress.XtraLayout.RowDefinition();
            DevExpress.XtraLayout.RowDefinition rowDefinition12 = new DevExpress.XtraLayout.RowDefinition();
            DevExpress.XtraLayout.RowDefinition rowDefinition13 = new DevExpress.XtraLayout.RowDefinition();
            DevExpress.XtraLayout.RowDefinition rowDefinition14 = new DevExpress.XtraLayout.RowDefinition();
            DevExpress.XtraLayout.RowDefinition rowDefinition15 = new DevExpress.XtraLayout.RowDefinition();
            DevExpress.XtraLayout.ColumnDefinition columnDefinition8 = new DevExpress.XtraLayout.ColumnDefinition();
            DevExpress.XtraLayout.ColumnDefinition columnDefinition9 = new DevExpress.XtraLayout.ColumnDefinition();
            DevExpress.XtraLayout.ColumnDefinition columnDefinition10 = new DevExpress.XtraLayout.ColumnDefinition();
            DevExpress.XtraLayout.RowDefinition rowDefinition16 = new DevExpress.XtraLayout.RowDefinition();
            DevExpress.XtraLayout.RowDefinition rowDefinition17 = new DevExpress.XtraLayout.RowDefinition();
            DevExpress.XtraLayout.RowDefinition rowDefinition18 = new DevExpress.XtraLayout.RowDefinition();
            DevExpress.XtraLayout.RowDefinition rowDefinition19 = new DevExpress.XtraLayout.RowDefinition();
            DevExpress.XtraLayout.RowDefinition rowDefinition20 = new DevExpress.XtraLayout.RowDefinition();
            layoutControl1 = new DevExpress.XtraLayout.LayoutControl();
            marqueeProgressBarControl1 = new DevExpress.XtraEditors.MarqueeProgressBarControl();
            layoutControl2 = new DevExpress.XtraLayout.LayoutControl();
@@ -61,9 +61,7 @@
            layoutControlItem6 = new DevExpress.XtraLayout.LayoutControlItem();
            layoutControlItem7 = new DevExpress.XtraLayout.LayoutControlItem();
            layoutControlItem8 = new DevExpress.XtraLayout.LayoutControlItem();
            picSpecial = new DevExpress.XtraEditors.PictureEdit();
            Root = new DevExpress.XtraLayout.LayoutControlGroup();
            layoutControlItem1 = new DevExpress.XtraLayout.LayoutControlItem();
            labSysTitle = new DevExpress.XtraLayout.SimpleLabelItem();
            layoutControlItem2 = new DevExpress.XtraLayout.LayoutControlItem();
            itemForProgress = new DevExpress.XtraLayout.LayoutControlItem();
@@ -83,9 +81,7 @@
            ((System.ComponentModel.ISupportInitialize)layoutControlItem6).BeginInit();
            ((System.ComponentModel.ISupportInitialize)layoutControlItem7).BeginInit();
            ((System.ComponentModel.ISupportInitialize)layoutControlItem8).BeginInit();
            ((System.ComponentModel.ISupportInitialize)picSpecial.Properties).BeginInit();
            ((System.ComponentModel.ISupportInitialize)Root).BeginInit();
            ((System.ComponentModel.ISupportInitialize)layoutControlItem1).BeginInit();
            ((System.ComponentModel.ISupportInitialize)labSysTitle).BeginInit();
            ((System.ComponentModel.ISupportInitialize)layoutControlItem2).BeginInit();
            ((System.ComponentModel.ISupportInitialize)itemForProgress).BeginInit();
@@ -96,12 +92,11 @@
            layoutControl1.BackColor = Color.Transparent;
            layoutControl1.Controls.Add(marqueeProgressBarControl1);
            layoutControl1.Controls.Add(layoutControl2);
            layoutControl1.Controls.Add(picSpecial);
            layoutControl1.Dock = DockStyle.Fill;
            layoutControl1.Location = new Point(0, 0);
            layoutControl1.Margin = new Padding(3, 2, 3, 2);
            layoutControl1.Name = "layoutControl1";
            layoutControl1.OptionsCustomizationForm.DesignTimeCustomizationFormPositionAndSize = new Rectangle(203, 181, 650, 400);
            layoutControl1.OptionsCustomizationForm.DesignTimeCustomizationFormPositionAndSize = new Rectangle(994, 279, 650, 400);
            layoutControl1.Root = Root;
            layoutControl1.Size = new Size(1097, 565);
            layoutControl1.TabIndex = 0;
@@ -132,6 +127,7 @@
            layoutControl2.Location = new Point(662, 172);
            layoutControl2.Margin = new Padding(3, 2, 3, 2);
            layoutControl2.Name = "layoutControl2";
            layoutControl2.OptionsCustomizationForm.DesignTimeCustomizationFormPositionAndSize = new Rectangle(943, 480, 650, 400);
            layoutControl2.Root = layoutControlGroup1;
            layoutControl2.Size = new Size(302, 302);
            layoutControl2.TabIndex = 5;
@@ -250,29 +246,29 @@
            // 
            // layoutControlGroup1
            // 
            layoutControlGroup1.AppearanceGroup.BackColor = Color.White;
            layoutControlGroup1.AppearanceGroup.BackColor = Color.FromArgb(0, 192, 192);
            layoutControlGroup1.AppearanceGroup.Options.UseBackColor = true;
            layoutControlGroup1.EnableIndentsWithoutBorders = DevExpress.Utils.DefaultBoolean.True;
            layoutControlGroup1.GroupBordersVisible = false;
            layoutControlGroup1.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] { layoutControlItem3, layoutControlItem4, layoutControlItem5, layoutControlItem6, layoutControlItem7, layoutControlItem8 });
            layoutControlGroup1.LayoutMode = DevExpress.XtraLayout.Utils.LayoutMode.Table;
            layoutControlGroup1.Name = "layoutControlGroup1";
            columnDefinition1.SizeType = SizeType.Percent;
            columnDefinition1.Width = 50D;
            columnDefinition2.SizeType = SizeType.Percent;
            columnDefinition2.Width = 50D;
            layoutControlGroup1.OptionsTableLayoutGroup.ColumnDefinitions.AddRange(new DevExpress.XtraLayout.ColumnDefinition[] { columnDefinition1, columnDefinition2 });
            rowDefinition1.Height = 59D;
            rowDefinition1.SizeType = SizeType.Absolute;
            rowDefinition2.Height = 44D;
            rowDefinition2.SizeType = SizeType.Absolute;
            rowDefinition3.Height = 44D;
            rowDefinition3.SizeType = SizeType.Absolute;
            rowDefinition4.Height = 44D;
            rowDefinition4.SizeType = SizeType.Absolute;
            rowDefinition5.Height = 44D;
            rowDefinition5.SizeType = SizeType.Absolute;
            layoutControlGroup1.OptionsTableLayoutGroup.RowDefinitions.AddRange(new DevExpress.XtraLayout.RowDefinition[] { rowDefinition1, rowDefinition2, rowDefinition3, rowDefinition4, rowDefinition5 });
            layoutControlGroup1.Name = "Root";
            columnDefinition6.SizeType = SizeType.Percent;
            columnDefinition6.Width = 50D;
            columnDefinition7.SizeType = SizeType.Percent;
            columnDefinition7.Width = 50D;
            layoutControlGroup1.OptionsTableLayoutGroup.ColumnDefinitions.AddRange(new DevExpress.XtraLayout.ColumnDefinition[] { columnDefinition6, columnDefinition7 });
            rowDefinition11.Height = 59D;
            rowDefinition11.SizeType = SizeType.Absolute;
            rowDefinition12.Height = 44D;
            rowDefinition12.SizeType = SizeType.Absolute;
            rowDefinition13.Height = 44D;
            rowDefinition13.SizeType = SizeType.Absolute;
            rowDefinition14.Height = 44D;
            rowDefinition14.SizeType = SizeType.Absolute;
            rowDefinition15.Height = 44D;
            rowDefinition15.SizeType = SizeType.Absolute;
            layoutControlGroup1.OptionsTableLayoutGroup.RowDefinitions.AddRange(new DevExpress.XtraLayout.RowDefinition[] { rowDefinition11, rowDefinition12, rowDefinition13, rowDefinition14, rowDefinition15 });
            layoutControlGroup1.Size = new Size(302, 302);
            layoutControlGroup1.TextVisible = false;
            // 
@@ -365,62 +361,35 @@
            layoutControlItem8.TextSize = new Size(0, 0);
            layoutControlItem8.TextVisible = false;
            // 
            // picSpecial
            //
            picSpecial.Location = new Point(2, 61);
            picSpecial.Margin = new Padding(3, 2, 3, 2);
            picSpecial.Name = "picSpecial";
            picSpecial.Properties.AllowFocused = false;
            picSpecial.Properties.Appearance.BackColor = Color.Transparent;
            picSpecial.Properties.Appearance.Options.UseBackColor = true;
            picSpecial.Properties.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.NoBorder;
            picSpecial.Properties.NullText = " ";
            picSpecial.Properties.ShowMenu = false;
            picSpecial.Properties.SizeMode = DevExpress.XtraEditors.Controls.PictureSizeMode.Zoom;
            picSpecial.Size = new Size(656, 413);
            picSpecial.StyleController = layoutControl1;
            picSpecial.TabIndex = 4;
            //
            // Root
            // 
            Root.BackgroundImageOptions.Layout = ImageLayout.Zoom;
            Root.EnableIndentsWithoutBorders = DevExpress.Utils.DefaultBoolean.True;
            Root.GroupBordersVisible = false;
            Root.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] { layoutControlItem1, labSysTitle, layoutControlItem2, itemForProgress });
            Root.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] { labSysTitle, layoutControlItem2, itemForProgress });
            Root.LayoutMode = DevExpress.XtraLayout.Utils.LayoutMode.Table;
            Root.Name = "Root";
            columnDefinition3.SizeType = SizeType.Percent;
            columnDefinition3.Width = 100D;
            columnDefinition4.SizeType = SizeType.Absolute;
            columnDefinition4.Width = 306D;
            columnDefinition5.SizeType = SizeType.Absolute;
            columnDefinition5.Width = 131D;
            Root.OptionsTableLayoutGroup.ColumnDefinitions.AddRange(new DevExpress.XtraLayout.ColumnDefinition[] { columnDefinition3, columnDefinition4, columnDefinition5 });
            rowDefinition6.Height = 59D;
            rowDefinition6.SizeType = SizeType.Absolute;
            rowDefinition7.Height = 111D;
            rowDefinition7.SizeType = SizeType.Absolute;
            rowDefinition8.Height = 100D;
            rowDefinition8.SizeType = SizeType.Percent;
            rowDefinition9.Height = 74D;
            rowDefinition9.SizeType = SizeType.Absolute;
            rowDefinition10.Height = 15D;
            rowDefinition10.SizeType = SizeType.Absolute;
            Root.OptionsTableLayoutGroup.RowDefinitions.AddRange(new DevExpress.XtraLayout.RowDefinition[] { rowDefinition6, rowDefinition7, rowDefinition8, rowDefinition9, rowDefinition10 });
            columnDefinition8.SizeType = SizeType.Percent;
            columnDefinition8.Width = 100D;
            columnDefinition9.SizeType = SizeType.Absolute;
            columnDefinition9.Width = 306D;
            columnDefinition10.SizeType = SizeType.Absolute;
            columnDefinition10.Width = 131D;
            Root.OptionsTableLayoutGroup.ColumnDefinitions.AddRange(new DevExpress.XtraLayout.ColumnDefinition[] { columnDefinition8, columnDefinition9, columnDefinition10 });
            rowDefinition16.Height = 59D;
            rowDefinition16.SizeType = SizeType.Absolute;
            rowDefinition17.Height = 111D;
            rowDefinition17.SizeType = SizeType.Absolute;
            rowDefinition18.Height = 100D;
            rowDefinition18.SizeType = SizeType.Percent;
            rowDefinition19.Height = 74D;
            rowDefinition19.SizeType = SizeType.Absolute;
            rowDefinition20.Height = 15D;
            rowDefinition20.SizeType = SizeType.Absolute;
            Root.OptionsTableLayoutGroup.RowDefinitions.AddRange(new DevExpress.XtraLayout.RowDefinition[] { rowDefinition16, rowDefinition17, rowDefinition18, rowDefinition19, rowDefinition20 });
            Root.Padding = new DevExpress.XtraLayout.Utils.Padding(0, 0, 0, 0);
            Root.Size = new Size(1097, 565);
            Root.TextVisible = false;
            //
            // layoutControlItem1
            //
            layoutControlItem1.Control = picSpecial;
            layoutControlItem1.Location = new Point(0, 59);
            layoutControlItem1.Name = "layoutControlItem1";
            layoutControlItem1.OptionsTableLayoutItem.RowIndex = 1;
            layoutControlItem1.OptionsTableLayoutItem.RowSpan = 2;
            layoutControlItem1.Size = new Size(660, 417);
            layoutControlItem1.TextSize = new Size(0, 0);
            layoutControlItem1.TextVisible = false;
            // 
            // labSysTitle
            // 
@@ -435,9 +404,9 @@
            labSysTitle.OptionsTableLayoutItem.ColumnSpan = 3;
            labSysTitle.Padding = new DevExpress.XtraLayout.Utils.Padding(0, 0, 0, 0);
            labSysTitle.Size = new Size(1097, 59);
            labSysTitle.Text = "循环水分析系统";
            labSysTitle.Text = " å¾ªçŽ¯æ°´åˆ†æžç³»ç»Ÿ";
            labSysTitle.TextAlignMode = DevExpress.XtraLayout.TextAlignModeItem.AutoSize;
            labSysTitle.TextSize = new Size(224, 39);
            labSysTitle.TextSize = new Size(234, 39);
            labSysTitle.MouseDown += labSysTitle_MouseDown;
            // 
            // layoutControlItem2
@@ -468,10 +437,12 @@
            // 
            // LoginFrm
            // 
            Appearance.BackColor = Color.FromArgb(7, 63, 198);
            Appearance.BackColor = SystemColors.Control;
            Appearance.Options.UseBackColor = true;
            AutoScaleDimensions = new SizeF(7F, 14F);
            AutoScaleMode = AutoScaleMode.Font;
            BackgroundImageLayoutStore = ImageLayout.None;
            BackgroundImageStore = Xhs.Core.Properties.Resources.loginbg;
            ClientSize = new Size(1097, 565);
            Controls.Add(layoutControl1);
            DoubleBuffered = true;
@@ -496,9 +467,7 @@
            ((System.ComponentModel.ISupportInitialize)layoutControlItem6).EndInit();
            ((System.ComponentModel.ISupportInitialize)layoutControlItem7).EndInit();
            ((System.ComponentModel.ISupportInitialize)layoutControlItem8).EndInit();
            ((System.ComponentModel.ISupportInitialize)picSpecial.Properties).EndInit();
            ((System.ComponentModel.ISupportInitialize)Root).EndInit();
            ((System.ComponentModel.ISupportInitialize)layoutControlItem1).EndInit();
            ((System.ComponentModel.ISupportInitialize)labSysTitle).EndInit();
            ((System.ComponentModel.ISupportInitialize)layoutControlItem2).EndInit();
            ((System.ComponentModel.ISupportInitialize)itemForProgress).EndInit();
@@ -509,8 +478,6 @@
        private DevExpress.XtraLayout.LayoutControl layoutControl1;
        private DevExpress.XtraLayout.LayoutControlGroup Root;
        private DevExpress.XtraEditors.PictureEdit picSpecial;
        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem1;
        private DevExpress.XtraLayout.SimpleLabelItem labSysTitle;
        private DevExpress.XtraLayout.LayoutControl layoutControl2;
        private DevExpress.XtraLayout.LayoutControlGroup layoutControlGroup1;
Desktop/HStation.Desktop.Xhs.Core/MainForm.Designer.cs
@@ -28,19 +28,231 @@
        /// </summary>
        private void InitializeComponent()
        {
            components = new System.ComponentModel.Container();
            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm));
            tileNavPane = new DevExpress.XtraBars.Navigation.TileNavPane();
            nbTitle = new DevExpress.XtraBars.Navigation.NavButton();
            nbMin = new DevExpress.XtraBars.Navigation.NavButton();
            nbNormal = new DevExpress.XtraBars.Navigation.NavButton();
            nbClose = new DevExpress.XtraBars.Navigation.NavButton();
            documentManager1 = new DevExpress.XtraBars.Docking2010.DocumentManager(components);
            barManager1 = new DevExpress.XtraBars.BarManager(components);
            bar3 = new DevExpress.XtraBars.Bar();
            barStaticOwner = new DevExpress.XtraBars.BarStaticItem();
            barStaticVersion = new DevExpress.XtraBars.BarStaticItem();
            barDockControlTop = new DevExpress.XtraBars.BarDockControl();
            barDockControlBottom = new DevExpress.XtraBars.BarDockControl();
            barDockControlLeft = new DevExpress.XtraBars.BarDockControl();
            barDockControlRight = new DevExpress.XtraBars.BarDockControl();
            barDockingMenuItem1 = new DevExpress.XtraBars.BarDockingMenuItem();
            tabbedView1 = new DevExpress.XtraBars.Docking2010.Views.Tabbed.TabbedView(components);
            dockManager1 = new DevExpress.XtraBars.Docking.DockManager(components);
            ((System.ComponentModel.ISupportInitialize)tileNavPane).BeginInit();
            ((System.ComponentModel.ISupportInitialize)documentManager1).BeginInit();
            ((System.ComponentModel.ISupportInitialize)barManager1).BeginInit();
            ((System.ComponentModel.ISupportInitialize)tabbedView1).BeginInit();
            ((System.ComponentModel.ISupportInitialize)dockManager1).BeginInit();
            SuspendLayout();
            //
            // tileNavPane
            //
            tileNavPane.Buttons.Add(nbTitle);
            tileNavPane.Buttons.Add(nbMin);
            tileNavPane.Buttons.Add(nbNormal);
            tileNavPane.Buttons.Add(nbClose);
            //
            // tileNavCategory1
            //
            tileNavPane.DefaultCategory.Name = "tileNavCategory1";
            //
            //
            //
            tileNavPane.DefaultCategory.Tile.DropDownOptions.BeakColor = Color.Empty;
            tileNavPane.Dock = DockStyle.Top;
            tileNavPane.Location = new Point(0, 0);
            tileNavPane.Name = "tileNavPane";
            tileNavPane.Size = new Size(932, 40);
            tileNavPane.TabIndex = 0;
            tileNavPane.Text = "tileNavPane1";
            tileNavPane.ElementClick += tileNavPane_ElementClick;
            tileNavPane.MouseDown += tileNavPane_MouseDown;
            //
            // nbTitle
            //
            nbTitle.Caption = "循环水分析系统";
            nbTitle.Name = "nbTitle";
            //
            // nbMin
            //
            nbMin.Alignment = DevExpress.XtraBars.Navigation.NavButtonAlignment.Right;
            nbMin.Caption = null;
            nbMin.ImageOptions.AllowGlyphSkinning = DevExpress.Utils.DefaultBoolean.True;
            nbMin.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("nbMin.ImageOptions.SvgImage");
            nbMin.Name = "nbMin";
            nbMin.ElementClick += nbMin_ElementClick;
            //
            // nbNormal
            //
            nbNormal.Alignment = DevExpress.XtraBars.Navigation.NavButtonAlignment.Right;
            nbNormal.Caption = null;
            nbNormal.ImageOptions.AllowGlyphSkinning = DevExpress.Utils.DefaultBoolean.True;
            nbNormal.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("nbNormal.ImageOptions.SvgImage");
            nbNormal.ImageOptions.SvgImageSize = new Size(24, 24);
            nbNormal.Name = "nbNormal";
            nbNormal.ElementClick += nbNormal_ElementClick;
            //
            // nbClose
            //
            nbClose.Alignment = DevExpress.XtraBars.Navigation.NavButtonAlignment.Right;
            nbClose.Caption = null;
            nbClose.ImageOptions.AllowGlyphSkinning = DevExpress.Utils.DefaultBoolean.True;
            nbClose.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("nbClose.ImageOptions.SvgImage");
            nbClose.Name = "nbClose";
            nbClose.ElementClick += nabClose_ElementClick;
            //
            // documentManager1
            //
            documentManager1.ContainerControl = this;
            documentManager1.MenuManager = barManager1;
            documentManager1.View = tabbedView1;
            documentManager1.ViewCollection.AddRange(new DevExpress.XtraBars.Docking2010.Views.BaseView[] { tabbedView1 });
            //
            // barManager1
            //
            barManager1.Bars.AddRange(new DevExpress.XtraBars.Bar[] { bar3 });
            barManager1.DockControls.Add(barDockControlTop);
            barManager1.DockControls.Add(barDockControlBottom);
            barManager1.DockControls.Add(barDockControlLeft);
            barManager1.DockControls.Add(barDockControlRight);
            barManager1.DockManager = dockManager1;
            barManager1.Form = this;
            barManager1.Items.AddRange(new DevExpress.XtraBars.BarItem[] { barStaticOwner, barStaticVersion, barDockingMenuItem1 });
            barManager1.MaxItemId = 4;
            barManager1.StatusBar = bar3;
            //
            // bar3
            //
            bar3.BarName = "Status bar";
            bar3.CanDockStyle = DevExpress.XtraBars.BarCanDockStyle.Bottom;
            bar3.DockCol = 0;
            bar3.DockRow = 0;
            bar3.DockStyle = DevExpress.XtraBars.BarDockStyle.Bottom;
            bar3.LinksPersistInfo.AddRange(new DevExpress.XtraBars.LinkPersistInfo[] { new DevExpress.XtraBars.LinkPersistInfo(barStaticOwner), new DevExpress.XtraBars.LinkPersistInfo(barStaticVersion) });
            bar3.OptionsBar.AllowQuickCustomization = false;
            bar3.OptionsBar.DrawDragBorder = false;
            bar3.OptionsBar.UseWholeRow = true;
            bar3.Text = "Status bar";
            //
            // barStaticOwner
            //
            barStaticOwner.Caption = "上海义维流体科技有限公司";
            barStaticOwner.Id = 1;
            barStaticOwner.Name = "barStaticOwner";
            //
            // barStaticVersion
            //
            barStaticVersion.Alignment = DevExpress.XtraBars.BarItemLinkAlignment.Right;
            barStaticVersion.Caption = "版本:1.0.0.0";
            barStaticVersion.Id = 2;
            barStaticVersion.Name = "barStaticVersion";
            //
            // barDockControlTop
            //
            barDockControlTop.CausesValidation = false;
            barDockControlTop.Dock = DockStyle.Top;
            barDockControlTop.Location = new Point(0, 0);
            barDockControlTop.Manager = barManager1;
            barDockControlTop.Size = new Size(932, 0);
            //
            // barDockControlBottom
            //
            barDockControlBottom.CausesValidation = false;
            barDockControlBottom.Dock = DockStyle.Bottom;
            barDockControlBottom.Location = new Point(0, 498);
            barDockControlBottom.Manager = barManager1;
            barDockControlBottom.Size = new Size(932, 23);
            //
            // barDockControlLeft
            //
            barDockControlLeft.CausesValidation = false;
            barDockControlLeft.Dock = DockStyle.Left;
            barDockControlLeft.Location = new Point(0, 0);
            barDockControlLeft.Manager = barManager1;
            barDockControlLeft.Size = new Size(0, 498);
            //
            // barDockControlRight
            //
            barDockControlRight.CausesValidation = false;
            barDockControlRight.Dock = DockStyle.Right;
            barDockControlRight.Location = new Point(932, 0);
            barDockControlRight.Manager = barManager1;
            barDockControlRight.Size = new Size(0, 498);
            //
            // barDockingMenuItem1
            //
            barDockingMenuItem1.Caption = "Window";
            barDockingMenuItem1.Id = 3;
            barDockingMenuItem1.Name = "barDockingMenuItem1";
            //
            // tabbedView1
            //
            tabbedView1.DocumentProperties.AllowPin = true;
            tabbedView1.DocumentSelected += tabbedView1_DocumentSelected;
            tabbedView1.DocumentAdded += tabbedView1_DocumentAdded;
            tabbedView1.DocumentActivated += tabbedView1_DocumentActivated;
            tabbedView1.DocumentClosed += tabbedView1_DocumentClosed;
            //
            // dockManager1
            //
            dockManager1.Form = this;
            dockManager1.MenuManager = barManager1;
            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" });
            // 
            // MainForm
            // 
            AutoScaleDimensions = new SizeF(7F, 17F);
            AutoScaleDimensions = new SizeF(7F, 14F);
            AutoScaleMode = AutoScaleMode.Font;
            ClientSize = new Size(800, 450);
            ClientSize = new Size(932, 521);
            Controls.Add(tileNavPane);
            Controls.Add(barDockControlLeft);
            Controls.Add(barDockControlRight);
            Controls.Add(barDockControlBottom);
            Controls.Add(barDockControlTop);
            Margin = new Padding(3, 2, 3, 2);
            Name = "MainForm";
            Text = "Form1";
            FormClosing += MainForm_FormClosing;
            FormClosed += MainForm_FormClosed;
            Load += MainForm_Load;
            Shown += MainForm_Shown;
            Resize += MainForm_Resize;
            ((System.ComponentModel.ISupportInitialize)tileNavPane).EndInit();
            ((System.ComponentModel.ISupportInitialize)documentManager1).EndInit();
            ((System.ComponentModel.ISupportInitialize)barManager1).EndInit();
            ((System.ComponentModel.ISupportInitialize)tabbedView1).EndInit();
            ((System.ComponentModel.ISupportInitialize)dockManager1).EndInit();
            ResumeLayout(false);
            PerformLayout();
        }
        #endregion
        private DevExpress.XtraBars.Navigation.TileNavPane tileNavPane;
        private DevExpress.XtraBars.Navigation.NavButton nbTitle;
        private DevExpress.XtraBars.Docking2010.DocumentManager documentManager1;
        private DevExpress.XtraBars.BarDockControl barDockControlLeft;
        private DevExpress.XtraBars.BarManager barManager1;
        private DevExpress.XtraBars.Bar bar3;
        private DevExpress.XtraBars.BarDockControl barDockControlTop;
        private DevExpress.XtraBars.BarDockControl barDockControlBottom;
        private DevExpress.XtraBars.BarDockControl barDockControlRight;
        private DevExpress.XtraBars.Docking2010.Views.Tabbed.TabbedView tabbedView1;
        private DevExpress.XtraBars.BarStaticItem barStaticOwner;
        private DevExpress.XtraBars.BarStaticItem barStaticVersion;
        private DevExpress.XtraBars.BarDockingMenuItem barDockingMenuItem1;
        private DevExpress.XtraBars.Navigation.NavButton nbMin;
        private DevExpress.XtraBars.Navigation.NavButton nbNormal;
        private DevExpress.XtraBars.Navigation.NavButton nbClose;
        private DevExpress.XtraBars.Docking.DockManager dockManager1;
    }
}
Desktop/HStation.Desktop.Xhs.Core/MainForm.cs
@@ -1,19 +1,456 @@
using DevExpress.XtraBars.Docking;
using DevExpress.XtraBars.Docking2010.Views;
using DevExpress.XtraBars.Navigation;
using DevExpress.XtraBars.Ribbon;
using DevExpress.XtraEditors;
using HStation.WinFrmUI;
using System.IO;
using Yw.WinFrmUI;
using Yw.WinFrmUI.Page;
using static DevExpress.XtraPrinting.BarCode.DataBarExpandedPatternProcessor;
namespace HStation.Desktop
{
    public partial class MainForm : Form
    public partial class MainForm : RibbonForm
    {
        public MainForm()
        {
            InitializeComponent();
        }
        #region TileNavPane ç›¸å…³å¤„理
        //最大化最小化窗体
        private void nbNormal_ElementClick(object sender, NavElementEventArgs e)
        {
            if (this.WindowState == FormWindowState.Maximized)
            {
                this.WindowState = FormWindowState.Normal;
            }
            else
            {
                this.WindowState = FormWindowState.Maximized;
            }
        }
        //最小化窗体
        private void nbMin_ElementClick(object sender, NavElementEventArgs e)
        {
            this.WindowState = FormWindowState.Minimized;
        }
        //关闭窗体
        private void nabClose_ElementClick(object sender, NavElementEventArgs e)
        {
            this.Close();
        }
        //移动窗体
        private void tileNavPane_MouseDown(object sender, MouseEventArgs e)
        {
            if (e.Clicks >= 2)
            {
                if (this.WindowState == FormWindowState.Maximized)
                {
                    this.WindowState = FormWindowState.Normal;
                }
                else
                {
                    this.WindowState = FormWindowState.Maximized;
                }
            }
            else
            {
                var hitInfo = this.tileNavPane.CalcHitInfo(e.Location);
                if (hitInfo.InButton)
                    return;
                this.DragMove();
            }
        }
        //功能点击事件
        private void tileNavPane_ElementClick(object sender, NavElementEventArgs e)
        {
            var item = e.Element as NavButton;
            if (item.Tag != null)
            {
                if (item.Tag is int)
                {
                    // var modular = (eModular)(int)item.Tag;
                    // SelectModular(modular, null);
                }
            }
        }
        #endregion
        #region çª—体事件
        //界面记载事件
        private void MainForm_Load(object sender, EventArgs e)
        {
        }
        //界面显示事件
        private void MainForm_Shown(object sender, EventArgs e)
        {
            var homeGuid = new PageGuid()
            {
                Modular = "Xhs",
                MoudingType = eMoudingType.Tab,
                Function = "home"
            };
            var homePage = new HomeXhsProjectPage();
            this.CreatePage(homePage, homeGuid);
        }
        //界面正在退出时确认
        private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (e.CloseReason == CloseReason.UserClosing)
            {
                if (XtraMessageBox.Show("是否关闭程序?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) != DialogResult.Yes)
                {
                    e.Cancel = true;
                    return;
                }
            }
        }
        //界面退出
        private void MainForm_FormClosed(object sender, FormClosedEventArgs e)
        {
        }
        //窗体尺寸改变
        private void MainForm_Resize(object sender, EventArgs e)
        {
            if (this.WindowState == FormWindowState.Maximized)
            {
            }
            else
            {
            }
        }
        #endregion
        #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;
            SelectModular(surfaceGuid.Modular, surfaceGuid);
        }
        //添加
        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
        #region Page
        //是否存在Page
        private 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 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 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 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.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.Tag = pguid;
                        this.tabbedView1.EndUpdate();
                        this.tabbedView1.Controller.Activate(doc);
                    }
                    break;
                default: break;
            }
            page.InitialDataSource();
            return true;
        }
        //关闭Page
        private 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);//不会触发正在关闭和关闭事件
                            }
                        }
                    }
                    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
        #region Modular
        //选择模块
        private void SelectModular(string modular, PageGuid pageGuid = null)
        {
            //foreach (NavButton item in this.tileNavPane.Buttons)
            //{
            //    if (item.Tag == null)
            //        continue;
            //    if (item.Tag is int)
            //    {
            //        if (((int)item.Tag) == (int)modular)
            //        {
            //            item.Appearance.BackColor = Color.FromArgb(255, 128, 0);
            //        }
            //        else
            //        {
            //            item.Appearance.BackColor = Color.Transparent;
            //        }
            //    }
            //}
            //this.docPnlFuncList.Text = modular.ToString();
            //this.funcTreeListCtrl1.SetBindingData(modular, surfaceGuid);
            //if (surfaceGuid == null)
            //{
            //    var func = this.funcTreeListCtrl1.SetDefault();
            //    if (func != null)
            //        CreateFuncPage(func);
            //}
        }
        #endregion
Desktop/HStation.Desktop.Xhs.Core/MainForm.resx
@@ -117,4 +117,70 @@
  <resheader name="writer">
    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <assembly alias="DevExpress.Data.v23.2" name="DevExpress.Data.v23.2, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
  <data name="nbMin.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAFICAAAC77u/
        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkJsdWV7ZmlsbDojMTE3N0Q3O30KCS5Z
        ZWxsb3d7ZmlsbDojRkZCMTE1O30KCS5CbGFja3tmaWxsOiM3MjcyNzI7fQoJLkdyZWVue2ZpbGw6IzAz
        OUMyMzt9CgkuUmVke2ZpbGw6I0QxMUMxQzt9Cgkuc3Qwe29wYWNpdHk6MC43NTt9Cgkuc3Qxe29wYWNp
        dHk6MC41O30KPC9zdHlsZT4NCiAgPGcgaWQ9IlJlbW92ZSI+DQogICAgPHBhdGggZD0iTTI3LDE4SDVj
        LTAuNiwwLTEtMC41LTEtMXYtMmMwLTAuNiwwLjQtMSwxLTFoMjJjMC41LDAsMSwwLjQsMSwxdjJDMjgs
        MTcuNSwyNy41LDE4LDI3LDE4eiIgY2xhc3M9IlJlZCIgLz4NCiAgPC9nPg0KPC9zdmc+Cw==
</value>
  </data>
  <data name="nbNormal.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAIkCAAAC77u/
        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkJsdWV7ZmlsbDojMTE3N0Q3O30KCS5Z
        ZWxsb3d7ZmlsbDojRkZCMTE1O30KCS5CbGFja3tmaWxsOiM3MjcyNzI7fQoJLkdyZWVue2ZpbGw6IzAz
        OUMyMzt9CgkuUmVke2ZpbGw6I0QxMUMxQzt9Cgkuc3Qwe29wYWNpdHk6MC43NTt9Cgkuc3Qxe29wYWNp
        dHk6MC41O30KPC9zdHlsZT4NCiAgPGcgaWQ9IldpbmRvdyI+DQogICAgPHBhdGggZD0iTTMwLDEwVjVj
        MC0wLjUtMC41LTEtMS0xSDNDMi41LDQsMiw0LjUsMiw1djVIMzB6IiBjbGFzcz0iQmx1ZSIgLz4NCiAg
        ICA8cGF0aCBkPSJNMjgsMTB2MTZINFYxMEgydjE3YzAsMC41LDAuNSwxLDEsMWgyNmMwLjUsMCwxLTAu
        NSwxLTFWMTBIMjh6IiBjbGFzcz0iQmxhY2siIC8+DQogIDwvZz4NCjwvc3ZnPgs=
</value>
  </data>
  <data name="nbClose.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAD0DAAAC77u/
        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLlJlZHtmaWxsOiNEMTFDMUM7fQoJLkJs
        YWNre2ZpbGw6IzcyNzI3Mjt9CgkuQmx1ZXtmaWxsOiMxMTc3RDc7fQoJLkdyZWVue2ZpbGw6IzAzOUMy
        Mzt9CgkuWWVsbG93e2ZpbGw6I0ZGQjExNTt9CgkuV2hpdGV7ZmlsbDojRkZGRkZGO30KCS5zdDB7b3Bh
        Y2l0eTowLjU7fQoJLnN0MXtvcGFjaXR5OjAuNzU7fQo8L3N0eWxlPg0KICA8ZyBpZD0iRGVsZXRlIj4N
        CiAgICA8Zz4NCiAgICAgIDxwYXRoIGQ9Ik0xOC44LDE2bDYuOS02LjljMC40LTAuNCwwLjQtMSwwLTEu
        NGwtMS40LTEuNGMtMC40LTAuNC0xLTAuNC0xLjQsMEwxNiwxMy4yTDkuMSw2LjNjLTAuNC0wLjQtMS0w
        LjQtMS40LDAgICAgTDYuMyw3LjdjLTAuNCwwLjQtMC40LDEsMCwxLjRsNi45LDYuOWwtNi45LDYuOWMt
        MC40LDAuNC0wLjQsMSwwLDEuNGwxLjQsMS40YzAuNCwwLjQsMSwwLjQsMS40LDBsNi45LTYuOWw2Ljks
        Ni45ICAgIGMwLjQsMC40LDEsMC40LDEuNCwwbDEuNC0xLjRjMC40LTAuNCwwLjQtMSwwLTEuNEwxOC44
        LDE2eiIgY2xhc3M9IlJlZCIgLz4NCiAgICA8L2c+DQogIDwvZz4NCjwvc3ZnPgs=
</value>
  </data>
  <metadata name="documentManager1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
    <value>17, 17</value>
  </metadata>
  <metadata name="barManager1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
    <value>190, 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>
  </metadata>
</root>
Desktop/HStation.Desktop.Xhs.Core/Program.cs
@@ -22,8 +22,9 @@
            //扫描全局DTO映射
            //TypeAdapterConfig.GlobalSettings.Scan(Assembly.Load("Yw.BLL.Auth.Core"), Assembly.Load("HStation.BLL.Xhs.Core"));
            Application.Run(new TestForm());
            DbFirstHelper.Initial();
            //TestHelper.AddTestProject();
            Application.Run(new MainForm());
        }
    }
}
Desktop/HStation.Desktop.Xhs.Core/Properties/Resources.Designer.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,73 @@
//------------------------------------------------------------------------------
// <auto-generated>
//     æ­¤ä»£ç ç”±å·¥å…·ç”Ÿæˆã€‚
//     è¿è¡Œæ—¶ç‰ˆæœ¬:4.0.30319.42000
//
//     å¯¹æ­¤æ–‡ä»¶çš„æ›´æ”¹å¯èƒ½ä¼šå¯¼è‡´ä¸æ­£ç¡®çš„行为,并且如果
//     é‡æ–°ç”Ÿæˆä»£ç ï¼Œè¿™äº›æ›´æ”¹å°†ä¼šä¸¢å¤±ã€‚
// </auto-generated>
//------------------------------------------------------------------------------
namespace HStation.Desktop.Xhs.Core.Properties {
    using System;
    /// <summary>
    ///   ä¸€ä¸ªå¼ºç±»åž‹çš„资源类,用于查找本地化的字符串等。
    /// </summary>
    // æ­¤ç±»æ˜¯ç”± StronglyTypedResourceBuilder
    // ç±»é€šè¿‡ç±»ä¼¼äºŽ ResGen æˆ– Visual Studio çš„工具自动生成的。
    // è‹¥è¦æ·»åŠ æˆ–ç§»é™¤æˆå‘˜ï¼Œè¯·ç¼–è¾‘ .ResX æ–‡ä»¶ï¼Œç„¶åŽé‡æ–°è¿è¡Œ ResGen
    // (以 /str ä½œä¸ºå‘½ä»¤é€‰é¡¹),或重新生成 VS é¡¹ç›®ã€‚
    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
    internal class Resources {
        private static global::System.Resources.ResourceManager resourceMan;
        private static global::System.Globalization.CultureInfo resourceCulture;
        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
        internal Resources() {
        }
        /// <summary>
        ///   è¿”回此类使用的缓存的 ResourceManager å®žä¾‹ã€‚
        /// </summary>
        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
        internal static global::System.Resources.ResourceManager ResourceManager {
            get {
                if (object.ReferenceEquals(resourceMan, null)) {
                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("HStation.Desktop.Xhs.Core.Properties.Resources", typeof(Resources).Assembly);
                    resourceMan = temp;
                }
                return resourceMan;
            }
        }
        /// <summary>
        ///   é‡å†™å½“前线程的 CurrentUICulture å±žæ€§ï¼Œå¯¹
        ///   ä½¿ç”¨æ­¤å¼ºç±»åž‹èµ„源类的所有资源查找执行重写。
        /// </summary>
        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
        internal static global::System.Globalization.CultureInfo Culture {
            get {
                return resourceCulture;
            }
            set {
                resourceCulture = value;
            }
        }
        /// <summary>
        ///   æŸ¥æ‰¾ System.Drawing.Bitmap ç±»åž‹çš„æœ¬åœ°åŒ–资源。
        /// </summary>
        internal static System.Drawing.Bitmap loginbg {
            get {
                object obj = ResourceManager.GetObject("loginbg", resourceCulture);
                return ((System.Drawing.Bitmap)(obj));
            }
        }
    }
}
Desktop/HStation.Desktop.Xhs.Core/Properties/Resources.resx
copy from WinFrmUI/HStation.WinFrmUI.Xhs.Core/04-HomePageMainPanel/XhsProjectTreeList.resx copy to Desktop/HStation.Desktop.Xhs.Core/Properties/Resources.resx
Îļþ´Ó WinFrmUI/HStation.WinFrmUI.Xhs.Core/04-HomePageMainPanel/XhsProjectTreeList.resx ¸´ÖÆ
@@ -1,17 +1,17 @@
<?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
    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>
@@ -26,36 +26,36 @@
        <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
    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
    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
    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
    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
    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
    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
    value   : The object must be serialized into a byte array
            : using a System.ComponentModel.TypeConverter
            : and then encoded with base64 encoding.
    -->
@@ -117,28 +117,8 @@
  <resheader name="writer">
    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <assembly alias="DevExpress.Data.v23.2" name="DevExpress.Data.v23.2, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
  <data name="BtnImportProject.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
        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLlJlZHtmaWxsOiNEMTFDMUM7fQoJLkJs
        YWNre2ZpbGw6IzcyNzI3Mjt9CgkuQmx1ZXtmaWxsOiMxMTc3RDc7fQoJLkdyZWVue2ZpbGw6IzAzOUMy
        Mzt9CgkuWWVsbG93e2ZpbGw6I0ZGQjExNTt9CgkuV2hpdGV7ZmlsbDojRkZGRkZGO30KCS5zdDB7b3Bh
        Y2l0eTowLjU7fQoJLnN0MXtvcGFjaXR5OjAuNzU7fQoJLnN0MntvcGFjaXR5OjAuMjU7fQo8L3N0eWxl
        Pg0KICA8ZyBpZD0iSW1wb3J0Ij4NCiAgICA8cGF0aCBkPSJNMTAsMTJINlY2aDRWMTJ6IE0yMiwxN3Yx
        djljMCwwLjYtMC40LDEtMSwxSDFjLTAuNiwwLTEtMC40LTEtMVY3YzAtMC42LDAuNC0xLDEtMWgzdjho
        MTRMMjIsMTd6IE0xOCwxOEg0ICAgdjZoMTRWMTh6IiBjbGFzcz0iQmxhY2siIC8+DQogICAgPHBvbHln
        b24gcG9pbnRzPSIzMCw2IDIyLDYgMjIsMiAxNCw4IDIyLDE0IDIyLDEwIDMwLDEwICAiIGNsYXNzPSJH
        cmVlbiIgLz4NCiAgPC9nPg0KPC9zdmc+Cw==
</value>
  <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
  <data name="loginbg" type="System.Resources.ResXFileRef, System.Windows.Forms">
    <value>..\Resources\loginbg.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
  </data>
  <metadata name="bindingSource1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
    <value>17, 17</value>
  </metadata>
</root>
Desktop/HStation.Desktop.Xhs.Core/Resources/loginbg.png
Desktop/HStation.Desktop.Xhs.Core/TestHelper.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
namespace HStation.Desktop
{
    /// <summary>
    ///
    /// </summary>
    public class TestHelper
    {
        /// <summary>
        /// æ·»åŠ æµ‹è¯•é¡¹ç›®
        /// </summary>
        public static void AddTestProject()
        {
            var project = new HStation.Dto.AddXhsProjectExtensionsInput();
            project.Name = "测试项目2";
            project.Customer = "测试客户2";
            project.SiteList = new List<Dto.AddXhsProjectSiteExtensionsInput>() {
                new Dto.AddXhsProjectSiteExtensionsInput(){
                    Name="测试站"
                }
            };
            new BLL.XhsProjectExtensions().Insert(project);
        }
    }
}
Service/HStation.Service.Xhs.Core/00-core/Purpose.cs
@@ -5,9 +5,10 @@
    /// </summary>
    public class Purpose
    {
        /// <summary>
        /// æ¨¡æ‹Ÿ
        /// </summary>
        public const string æ¨¡æ‹Ÿ = "模拟";
        public const string Simulation = "simulation";
    }
}
Service/HStation.Service.Xhs.Core/01-entity/XhsProject.cs
@@ -3,7 +3,7 @@
namespace HStation.Entity
{
    /// <summary>
    /// ä¸šåŠ¡ç«™
    /// é¡¹ç›®
    /// </summary>
    [SysType("xhs-project")]
    [SysPropValueTable("xhs_project_prop_value")]
Service/HStation.Service.Xhs.Core/03-settings/01-paras/00-core/Paras_Xhs.cs
@@ -21,6 +21,11 @@
        /// </summary>
        public Paras_Xhs_CAL CAL { get; set; }
        /// <summary>
        /// æ–‡ä»¶
        /// </summary>
        public Paras_Xhs_File File { get; set; }
    }
}
Service/HStation.Service.Xhs.Core/03-settings/01-paras/03-file/Paras_Xhs_File.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
namespace HStation.Settings
{
    /// <summary>
    /// æ–‡ä»¶
    /// </summary>
    public class Paras_Xhs_File
    {
        /// <summary>
        /// åŽç¼€
        /// </summary>
        public string Suffix { get; set; }
        /// <summary>
        /// å¯†ç 
        /// </summary>
        public string Password { get; set; }
    }
}
Service/HStation.Service.Xhs.Core/04-dal/02-postgresql/XhsProject.cs
@@ -73,7 +73,7 @@
                            }
                        }
                    }
                    db.CommitTran();
                    return entityProject.ID;
                }
                catch
@@ -126,6 +126,7 @@
                            }
                        }
                    }
                    db.CommitTran();
                    return true;
                }
                catch
Service/HStation.Service.Xhs.Core/04-dal/03-sqlite/XhsProject.cs
@@ -73,7 +73,7 @@
                            }
                        }
                    }
                    db.CommitTran();
                    return entityProject.ID;
                }
                catch
@@ -126,6 +126,7 @@
                            }
                        }
                    }
                    db.CommitTran();
                    return true;
                }
                catch
Service/HStation.Service.Xhs.Core/paras_xhs_settings.json
@@ -24,6 +24,10 @@
      },
      "LocalClient": {
      }
    },
    "File": {
      "Suffix": ".ywrvt",
      "Password": "123456"
    }
  }
WinFrmUI/HStation.WinFrmUI.Bimface.Core/HStation.WinFrmUI.Bimface.Core.csproj
@@ -7,4 +7,8 @@
    <ImplicitUsings>enable</ImplicitUsings>
  </PropertyGroup>
  <ItemGroup>
    <ProjectReference Include="..\Yw.WinFrmUI.Bimface.Core\Yw.WinFrmUI.Bimface.Core.csproj" />
  </ItemGroup>
</Project>
WinFrmUI/HStation.WinFrmUI.Xhs.Core/01-home/01-project/HomeXhsProjectTreeListCtrl.Designer.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,297 @@
namespace HStation.WinFrmUI
{
    partial class HomeXhsProjectTreeListCtrl
    {
        /// <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(HomeXhsProjectTreeListCtrl));
            layoutControl1 = new DevExpress.XtraLayout.LayoutControl();
            treeList1 = new DevExpress.XtraTreeList.TreeList();
            colName = new DevExpress.XtraTreeList.Columns.TreeListColumn();
            barManager1 = new DevExpress.XtraBars.BarManager(components);
            bar1 = new DevExpress.XtraBars.Bar();
            barBtnExpandAll = new DevExpress.XtraBars.BarButtonItem();
            barBtnCollpseAll = new DevExpress.XtraBars.BarButtonItem();
            barBtnSearchBox = new DevExpress.XtraBars.BarButtonItem();
            barCkTreeLine = new DevExpress.XtraBars.BarCheckItem();
            barDockControlTop = new DevExpress.XtraBars.BarDockControl();
            barDockControlBottom = new DevExpress.XtraBars.BarDockControl();
            barDockControlLeft = new DevExpress.XtraBars.BarDockControl();
            barDockControlRight = new DevExpress.XtraBars.BarDockControl();
            searchControl1 = new DevExpress.XtraEditors.SearchControl();
            Root = new DevExpress.XtraLayout.LayoutControlGroup();
            layoutControlItem1 = new DevExpress.XtraLayout.LayoutControlItem();
            layoutControlItem2 = new DevExpress.XtraLayout.LayoutControlItem();
            btnImportProject = new DevExpress.XtraEditors.SimpleButton();
            layoutControlItem3 = new DevExpress.XtraLayout.LayoutControlItem();
            ((ISupportInitialize)layoutControl1).BeginInit();
            layoutControl1.SuspendLayout();
            ((ISupportInitialize)treeList1).BeginInit();
            ((ISupportInitialize)barManager1).BeginInit();
            ((ISupportInitialize)searchControl1.Properties).BeginInit();
            ((ISupportInitialize)Root).BeginInit();
            ((ISupportInitialize)layoutControlItem1).BeginInit();
            ((ISupportInitialize)layoutControlItem2).BeginInit();
            ((ISupportInitialize)layoutControlItem3).BeginInit();
            SuspendLayout();
            //
            // layoutControl1
            //
            layoutControl1.Controls.Add(btnImportProject);
            layoutControl1.Controls.Add(treeList1);
            layoutControl1.Controls.Add(searchControl1);
            layoutControl1.Dock = DockStyle.Fill;
            layoutControl1.Location = new Point(0, 24);
            layoutControl1.Name = "layoutControl1";
            layoutControl1.Root = Root;
            layoutControl1.Size = new Size(235, 636);
            layoutControl1.TabIndex = 0;
            layoutControl1.Text = "layoutControl1";
            //
            // treeList1
            //
            treeList1.Columns.AddRange(new DevExpress.XtraTreeList.Columns.TreeListColumn[] { colName });
            treeList1.Location = new Point(2, 25);
            treeList1.MenuManager = barManager1;
            treeList1.Name = "treeList1";
            treeList1.OptionsMenu.EnableNodeMenu = false;
            treeList1.OptionsSelection.EnableAppearanceFocusedCell = false;
            treeList1.OptionsView.FocusRectStyle = DevExpress.XtraTreeList.DrawFocusRectStyle.None;
            treeList1.Size = new Size(231, 577);
            treeList1.TabIndex = 5;
            treeList1.ViewStyle = DevExpress.XtraTreeList.TreeListViewStyle.TreeView;
            treeList1.RowCellClick += treeList1_RowCellClick;
            treeList1.FocusedNodeChanged += treeList1_FocusedNodeChanged;
            //
            // colName
            //
            colName.Caption = "名称";
            colName.FieldName = "Name";
            colName.Name = "colName";
            colName.Visible = true;
            colName.VisibleIndex = 0;
            //
            // barManager1
            //
            barManager1.Bars.AddRange(new DevExpress.XtraBars.Bar[] { bar1 });
            barManager1.DockControls.Add(barDockControlTop);
            barManager1.DockControls.Add(barDockControlBottom);
            barManager1.DockControls.Add(barDockControlLeft);
            barManager1.DockControls.Add(barDockControlRight);
            barManager1.Form = this;
            barManager1.Items.AddRange(new DevExpress.XtraBars.BarItem[] { barBtnExpandAll, barBtnCollpseAll, barBtnSearchBox, barCkTreeLine });
            barManager1.MaxItemId = 5;
            //
            // bar1
            //
            bar1.BarName = "Custom 1";
            bar1.CanDockStyle = DevExpress.XtraBars.BarCanDockStyle.Top;
            bar1.DockCol = 0;
            bar1.DockRow = 0;
            bar1.DockStyle = DevExpress.XtraBars.BarDockStyle.Top;
            bar1.LinksPersistInfo.AddRange(new DevExpress.XtraBars.LinkPersistInfo[] { new DevExpress.XtraBars.LinkPersistInfo(barBtnExpandAll), new DevExpress.XtraBars.LinkPersistInfo(barBtnCollpseAll), new DevExpress.XtraBars.LinkPersistInfo(barBtnSearchBox), new DevExpress.XtraBars.LinkPersistInfo(barCkTreeLine) });
            bar1.OptionsBar.AllowQuickCustomization = false;
            bar1.OptionsBar.DrawDragBorder = false;
            bar1.OptionsBar.MultiLine = true;
            bar1.OptionsBar.UseWholeRow = true;
            bar1.Text = "Custom 1";
            //
            // barBtnExpandAll
            //
            barBtnExpandAll.Caption = "展开";
            barBtnExpandAll.Id = 0;
            barBtnExpandAll.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barBtnExpandAll.ImageOptions.SvgImage");
            barBtnExpandAll.Name = "barBtnExpandAll";
            barBtnExpandAll.ItemClick += barBtnExpandAll_ItemClick;
            //
            // barBtnCollpseAll
            //
            barBtnCollpseAll.Caption = "折叠";
            barBtnCollpseAll.Id = 1;
            barBtnCollpseAll.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barBtnCollpseAll.ImageOptions.SvgImage");
            barBtnCollpseAll.Name = "barBtnCollpseAll";
            barBtnCollpseAll.ItemClick += barBtnCollpseAll_ItemClick;
            //
            // barBtnSearchBox
            //
            barBtnSearchBox.Caption = "搜索";
            barBtnSearchBox.Id = 2;
            barBtnSearchBox.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barBtnSearchBox.ImageOptions.SvgImage");
            barBtnSearchBox.Name = "barBtnSearchBox";
            barBtnSearchBox.ItemClick += barBtnSearch_ItemClick;
            //
            // barCkTreeLine
            //
            barCkTreeLine.Caption = "树线";
            barCkTreeLine.Id = 4;
            barCkTreeLine.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barCkTreeLine.ImageOptions.SvgImage");
            barCkTreeLine.Name = "barCkTreeLine";
            barCkTreeLine.CheckedChanged += barCkTreeLine_CheckedChanged;
            //
            // barDockControlTop
            //
            barDockControlTop.CausesValidation = false;
            barDockControlTop.Dock = DockStyle.Top;
            barDockControlTop.Location = new Point(0, 0);
            barDockControlTop.Manager = barManager1;
            barDockControlTop.Size = new Size(235, 24);
            //
            // barDockControlBottom
            //
            barDockControlBottom.CausesValidation = false;
            barDockControlBottom.Dock = DockStyle.Bottom;
            barDockControlBottom.Location = new Point(0, 660);
            barDockControlBottom.Manager = barManager1;
            barDockControlBottom.Size = new Size(235, 0);
            //
            // barDockControlLeft
            //
            barDockControlLeft.CausesValidation = false;
            barDockControlLeft.Dock = DockStyle.Left;
            barDockControlLeft.Location = new Point(0, 24);
            barDockControlLeft.Manager = barManager1;
            barDockControlLeft.Size = new Size(0, 636);
            //
            // barDockControlRight
            //
            barDockControlRight.CausesValidation = false;
            barDockControlRight.Dock = DockStyle.Right;
            barDockControlRight.Location = new Point(235, 24);
            barDockControlRight.Manager = barManager1;
            barDockControlRight.Size = new Size(0, 636);
            //
            // searchControl1
            //
            searchControl1.Client = treeList1;
            searchControl1.Location = new Point(0, 2);
            searchControl1.MenuManager = barManager1;
            searchControl1.Name = "searchControl1";
            searchControl1.Properties.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] { new DevExpress.XtraEditors.Repository.ClearButton(), new DevExpress.XtraEditors.Repository.SearchButton() });
            searchControl1.Properties.Client = treeList1;
            searchControl1.Size = new Size(235, 20);
            searchControl1.StyleController = layoutControl1;
            searchControl1.TabIndex = 4;
            //
            // Root
            //
            Root.EnableIndentsWithoutBorders = DevExpress.Utils.DefaultBoolean.True;
            Root.GroupBordersVisible = false;
            Root.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] { layoutControlItem1, layoutControlItem2, layoutControlItem3 });
            Root.Name = "Root";
            Root.Padding = new DevExpress.XtraLayout.Utils.Padding(0, 0, 0, 0);
            Root.Size = new Size(235, 636);
            Root.TextVisible = false;
            //
            // layoutControlItem1
            //
            layoutControlItem1.Control = searchControl1;
            layoutControlItem1.Location = new Point(0, 0);
            layoutControlItem1.Name = "layoutControlItem1";
            layoutControlItem1.Padding = new DevExpress.XtraLayout.Utils.Padding(0, 0, 2, 1);
            layoutControlItem1.Size = new Size(235, 23);
            layoutControlItem1.TextSize = new Size(0, 0);
            layoutControlItem1.TextVisible = false;
            //
            // layoutControlItem2
            //
            layoutControlItem2.Control = treeList1;
            layoutControlItem2.Location = new Point(0, 23);
            layoutControlItem2.Name = "layoutControlItem2";
            layoutControlItem2.Size = new Size(235, 581);
            layoutControlItem2.TextSize = new Size(0, 0);
            layoutControlItem2.TextVisible = false;
            //
            // btnImportProject
            //
            btnImportProject.ImageOptions.ImageToTextAlignment = DevExpress.XtraEditors.ImageAlignToText.LeftCenter;
            btnImportProject.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("simpleButton1.ImageOptions.SvgImage");
            btnImportProject.ImageOptions.SvgImageSize = new Size(24, 24);
            btnImportProject.Location = new Point(2, 606);
            btnImportProject.Name = "btnImportProject";
            btnImportProject.Size = new Size(231, 28);
            btnImportProject.StyleController = layoutControl1;
            btnImportProject.TabIndex = 6;
            btnImportProject.Text = "导入项目";
            btnImportProject.Click += btnImportProject_Click;
            //
            // layoutControlItem3
            //
            layoutControlItem3.Control = btnImportProject;
            layoutControlItem3.Location = new Point(0, 604);
            layoutControlItem3.Name = "layoutControlItem3";
            layoutControlItem3.Size = new Size(235, 32);
            layoutControlItem3.TextSize = new Size(0, 0);
            layoutControlItem3.TextVisible = false;
            //
            // HomeXhsProjectTreeListCtrl
            //
            AutoScaleDimensions = new SizeF(7F, 14F);
            AutoScaleMode = AutoScaleMode.Font;
            Controls.Add(layoutControl1);
            Controls.Add(barDockControlLeft);
            Controls.Add(barDockControlRight);
            Controls.Add(barDockControlBottom);
            Controls.Add(barDockControlTop);
            Name = "HomeXhsProjectTreeListCtrl";
            Size = new Size(235, 660);
            ((ISupportInitialize)layoutControl1).EndInit();
            layoutControl1.ResumeLayout(false);
            ((ISupportInitialize)treeList1).EndInit();
            ((ISupportInitialize)barManager1).EndInit();
            ((ISupportInitialize)searchControl1.Properties).EndInit();
            ((ISupportInitialize)Root).EndInit();
            ((ISupportInitialize)layoutControlItem1).EndInit();
            ((ISupportInitialize)layoutControlItem2).EndInit();
            ((ISupportInitialize)layoutControlItem3).EndInit();
            ResumeLayout(false);
            PerformLayout();
        }
        #endregion
        private DevExpress.XtraLayout.LayoutControl layoutControl1;
        private DevExpress.XtraLayout.LayoutControlGroup Root;
        private DevExpress.XtraBars.BarManager barManager1;
        private DevExpress.XtraBars.Bar bar1;
        private DevExpress.XtraBars.BarButtonItem barBtnExpandAll;
        private DevExpress.XtraBars.BarDockControl barDockControlTop;
        private DevExpress.XtraBars.BarDockControl barDockControlBottom;
        private DevExpress.XtraBars.BarDockControl barDockControlLeft;
        private DevExpress.XtraBars.BarDockControl barDockControlRight;
        private DevExpress.XtraEditors.SearchControl searchControl1;
        private DevExpress.XtraBars.BarButtonItem barBtnCollpseAll;
        private DevExpress.XtraBars.BarButtonItem barBtnSearchBox;
        private DevExpress.XtraBars.BarCheckItem barCkTreeLine;
        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem1;
        private DevExpress.XtraTreeList.TreeList treeList1;
        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem2;
        private DevExpress.XtraTreeList.Columns.TreeListColumn colName;
        private DevExpress.XtraEditors.SimpleButton btnImportProject;
        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem3;
    }
}
WinFrmUI/HStation.WinFrmUI.Xhs.Core/01-home/01-project/HomeXhsProjectTreeListCtrl.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,120 @@
using DevExpress.Utils;
namespace HStation.WinFrmUI
{
    public partial class HomeXhsProjectTreeListCtrl : DevExpress.XtraEditors.XtraUserControl
    {
        public HomeXhsProjectTreeListCtrl()
        {
            InitializeComponent();
            this.treeList1.InitialDefaultSettings();
            this.layoutControl1.SetupLayoutControl();
        }
        /// <summary>
        /// é€‰æ‹©é¡¹ç›®äº‹ä»¶
        /// </summary>
        public event Action<XhsProjectStdDto> SelectProjectEvent;
        private List<HomeXhsProjectTreeViewModel> _allBindingList = null;//当前绑定列表
        /// <summary>
        /// ç»‘定数据
        /// </summary>
        public void SetBindingData(List<XhsProjectStdDto> allProjectList)
        {
            _allBindingList = new List<HomeXhsProjectTreeViewModel>();
            foreach (var item in allProjectList)
            {
                var vm = new HomeXhsProjectTreeViewModel(item);
                _allBindingList.Add(vm);
            }
            this.treeList1.DataSource = _allBindingList;
            this.treeList1.ForceInitialize();
            this.treeList1.ExpandAll();
        }
        /// <summary>
        /// è®¾ç½®é»˜è®¤
        /// </summary>
        public void SetFocused()
        {
            if (_allBindingList == null)
            {
                return;
            }
            var vm = _allBindingList.FirstOrDefault();
            if (vm != null)
            {
                this.treeList1.FocusedNode = this.treeList1.FindNodeByKeyID(vm.ID);
            }
        }
        /// <summary>
        /// è®¾ç½®èšç„¦
        /// </summary>
        public void SetFocused(long ID)
        {
            if (_allBindingList == null)
            {
                return;
            }
            this.treeList1.FocusedNode = this.treeList1.FindNodeByKeyID(ID);
        }
        //全部展开
        private void barBtnExpandAll_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            this.treeList1.ExpandAll();
        }
        //全部折叠
        private void barBtnCollpseAll_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            this.treeList1.CollapseAll();
        }
        //检索(menu)
        private void barBtnSearch_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            if (this.layoutControlItem1.Visibility == DevExpress.XtraLayout.Utils.LayoutVisibility.Always)
                this.layoutControlItem1.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never;
            else
                this.layoutControlItem1.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Always;
        }
        //树线
        private void barCkTreeLine_CheckedChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            this.treeList1.OptionsView.ShowTreeLines = this.barCkTreeLine.Checked ? DefaultBoolean.True : DefaultBoolean.False;
        }
        //鼠标点击
        private void treeList1_RowCellClick(object sender, DevExpress.XtraTreeList.RowCellClickEventArgs e)
        {
            //if (e.Button == MouseButtons.Left)
            //{
            //    var vm = this.treeList1.GetDataRecordByNode(e.Node) as HomeXhsProjectTreeViewModel;
            //    this.SelectProjectEvent?.Invoke(vm.Project);
            //}
        }
        //聚焦节点改变
        private void treeList1_FocusedNodeChanged(object sender, DevExpress.XtraTreeList.FocusedNodeChangedEventArgs e)
        {
            var vm = this.treeList1.GetDataRecordByNode(e.Node) as HomeXhsProjectTreeViewModel;
            this.SelectProjectEvent?.Invoke(vm.Project);
        }
        //导入项目
        private void btnImportProject_Click(object sender, EventArgs e)
        {
            var dlg = new ImportXhsProjectDlg();
            if (dlg.ShowDialog() == DialogResult.OK)
            {
            }
        }
    }
}
WinFrmUI/HStation.WinFrmUI.Xhs.Core/01-home/01-project/HomeXhsProjectTreeListCtrl.resx
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,231 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
  <!--
    Microsoft ResX Schema
    Version 2.0
    The primary goals of this format is to allow a simple XML format
    that is mostly human readable. The generation and parsing of the
    various data types are done through the TypeConverter classes
    associated with the data types.
    Example:
    ... ado.net/XML headers & schema ...
    <resheader name="resmimetype">text/microsoft-resx</resheader>
    <resheader name="version">2.0</resheader>
    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
        <value>[base64 mime encoded serialized .NET Framework object]</value>
    </data>
    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
        <comment>This is a comment</comment>
    </data>
    There are any number of "resheader" rows that contain simple
    name/value pairs.
    Each data row contains a name, and value. The row also contains a
    type or mimetype. Type corresponds to a .NET class that support
    text/value conversion through the TypeConverter architecture.
    Classes that don't support this are serialized and stored with the
    mimetype set.
    The mimetype is used for serialized objects, and tells the
    ResXResourceReader how to depersist the object. This is currently not
    extensible. For a given mimetype the value must be set accordingly:
    Note - application/x-microsoft.net.object.binary.base64 is the format
    that the ResXResourceWriter will generate, however the reader can
    read any of the formats listed below.
    mimetype: application/x-microsoft.net.object.binary.base64
    value   : The object must be serialized with
            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
            : and then encoded with base64 encoding.
    mimetype: application/x-microsoft.net.object.soap.base64
    value   : The object must be serialized with
            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
            : and then encoded with base64 encoding.
    mimetype: application/x-microsoft.net.object.bytearray.base64
    value   : The object must be serialized into a byte array
            : using a System.ComponentModel.TypeConverter
            : and then encoded with base64 encoding.
    -->
  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
    <xsd:element name="root" msdata:IsDataSet="true">
      <xsd:complexType>
        <xsd:choice maxOccurs="unbounded">
          <xsd:element name="metadata">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" />
              </xsd:sequence>
              <xsd:attribute name="name" use="required" type="xsd:string" />
              <xsd:attribute name="type" type="xsd:string" />
              <xsd:attribute name="mimetype" type="xsd:string" />
              <xsd:attribute ref="xml:space" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="assembly">
            <xsd:complexType>
              <xsd:attribute name="alias" type="xsd:string" />
              <xsd:attribute name="name" type="xsd:string" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="data">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
              <xsd:attribute ref="xml:space" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="resheader">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" />
            </xsd:complexType>
          </xsd:element>
        </xsd:choice>
      </xsd:complexType>
    </xsd:element>
  </xsd:schema>
  <resheader name="resmimetype">
    <value>text/microsoft-resx</value>
  </resheader>
  <resheader name="version">
    <value>2.0</value>
  </resheader>
  <resheader name="reader">
    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <resheader name="writer">
    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <assembly alias="DevExpress.Data.v23.2" name="DevExpress.Data.v23.2, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
  <data name="simpleButton1.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAIQEAAAC77u/
        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLlJlZHtmaWxsOiNEMTFDMUM7fQoJLkJs
        YWNre2ZpbGw6IzcyNzI3Mjt9CgkuQmx1ZXtmaWxsOiMxMTc3RDc7fQoJLkdyZWVue2ZpbGw6IzAzOUMy
        Mzt9CgkuWWVsbG93e2ZpbGw6I0ZGQjExNTt9CgkuV2hpdGV7ZmlsbDojRkZGRkZGO30KCS5zdDB7b3Bh
        Y2l0eTowLjU7fQoJLnN0MXtvcGFjaXR5OjAuNzU7fQoJLnN0MntvcGFjaXR5OjAuMjU7fQo8L3N0eWxl
        Pg0KICA8ZyBpZD0iT3V0bG9va0ltcG9ydCI+DQogICAgPHBvbHlnb24gcG9pbnRzPSIzMiw0IDI0LDQg
        MjQsMCAxNiw2IDI0LDEyIDI0LDggMzIsOCAgIiBjbGFzcz0iR3JlZW4iIC8+DQogICAgPHBhdGggZD0i
        TTI1LDE0SDE0VjhMMCwxMi4yVjI4bDE0LDR2LTZoMTFjMC41LDAsMS0wLjUsMS0xVjE1QzI2LDE0LjUs
        MjUuNSwxNCwyNSwxNHogTTkuMiwyMi45QzguNiwyMy42LDcuOSwyNCw3LDI0ICAgYy0wLjksMC0xLjYt
        MC40LTIuMi0xLjFDNC4zLDIyLjIsNCwyMS4zLDQsMjAuMWMwLTEuMiwwLjMtMi4yLDAuOC0zQzUuNCwx
        Ni40LDYuMSwxNiw3LjEsMTZjMC45LDAsMS42LDAuNCwyLjEsMS4xICAgYzAuNSwwLjcsMC44LDEuNyww
        LjgsMi44QzEwLDIxLjIsOS43LDIyLjIsOS4yLDIyLjl6IE0xNCwxNmg5bC02LDRsLTMtMlYxNnogTTI0
        LDI0SDE0di00bDMsMmw3LTQuNlYyNHogTTguNCwxNy45ICAgYzAuMywwLjUsMC41LDEuMiwwLjUsMi4x
        YzAsMC45LTAuMiwxLjYtMC41LDIuMWMtMC4zLDAuNS0wLjgsMC44LTEuNCwwLjhjLTAuNiwwLTEtMC4z
        LTEuNC0wLjhTNS4xLDIwLjksNS4xLDIwICAgYzAtMC45LDAuMi0xLjYsMC41LTIuMUM2LDE3LjQsNi41
        LDE3LjEsNywxNy4xQzcuNiwxNy4xLDguMSwxNy40LDguNCwxNy45eiIgY2xhc3M9IkJsdWUiIC8+DQog
        IDwvZz4NCjwvc3ZnPgs=
</value>
  </data>
  <metadata name="barManager1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
    <value>17, 17</value>
  </metadata>
  <data name="barBtnExpandAll.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAALACAAAC77u/
        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
        Y2U9InByZXNlcnZlIiBpZD0iRXhwYW5kX0ZpZWxkIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3
        IDAgMCAzMiAzMiI+DQogIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CgkuQmxhY2t7ZmlsbDojNzI3Mjcy
        O30KCS5HcmVlbntmaWxsOiMwMzlDMjM7fQoJLnN0MHtvcGFjaXR5OjAuNzU7fQo8L3N0eWxlPg0KICA8
        cG9seWdvbiBwb2ludHM9IjE0LDYgMTAsNiAxMCwyIDYsMiA2LDYgMiw2IDIsMTAgNiwxMCA2LDE0IDEw
        LDE0IDEwLDEwIDE0LDEwICIgY2xhc3M9IkdyZWVuIiAvPg0KICA8ZyBjbGFzcz0ic3QwIj4NCiAgICA8
        cGF0aCBkPSJNMjIsNmgxMHYySDIyVjZ6IE0yMiwxMmgxMHYtMkgyMlYxMnogTTIyLDIwaDEwdi0ySDIy
        VjIweiBNMjIsMjRoMTB2LTJIMjJWMjR6IiBjbGFzcz0iQmxhY2siIC8+DQogIDwvZz4NCiAgPHBhdGgg
        ZD0iTTE4LDJoMTR2MkgxOFYyeiBNMTgsMTZoMTR2LTJIMThWMTZ6IE0xOCwyOGgxNHYtMkgxOFYyOHoi
        IGNsYXNzPSJCbGFjayIgLz4NCjwvc3ZnPgs=
</value>
  </data>
  <data name="barBtnCollpseAll.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAIcCAAAC77u/
        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
        Y2U9InByZXNlcnZlIiBpZD0iQ29sbGFwc2VfRmllbGQiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpu
        ZXcgMCAwIDMyIDMyIj4NCiAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5CbGFja3tmaWxsOiM3Mjcy
        NzI7fQoJLlJlZHtmaWxsOiNEMTFDMUM7fQoJLnN0MHtvcGFjaXR5OjAuNzU7fQo8L3N0eWxlPg0KICA8
        cmVjdCB4PSIyIiB5PSI2IiB3aWR0aD0iMTIiIGhlaWdodD0iNCIgY2xhc3M9IlJlZCIgLz4NCiAgPGcg
        Y2xhc3M9InN0MCI+DQogICAgPHBhdGggZD0iTTIyLDZoMTB2MkgyMlY2eiBNMjIsMTJoMTB2LTJIMjJW
        MTJ6IE0yMiwyMGgxMHYtMkgyMlYyMHogTTIyLDI0aDEwdi0ySDIyVjI0eiIgY2xhc3M9IkJsYWNrIiAv
        Pg0KICA8L2c+DQogIDxwYXRoIGQ9Ik0xOCwyaDE0djJIMThWMnogTTE4LDE2aDE0di0ySDE4VjE2eiBN
        MTgsMjhoMTR2LTJIMThWMjh6IiBjbGFzcz0iQmxhY2siIC8+DQo8L3N2Zz4L
</value>
  </data>
  <data name="barBtnSearchBox.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAANoCAAAC77u/
        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkJsdWV7ZmlsbDojMTE3N0Q3O30KCS5Z
        ZWxsb3d7ZmlsbDojRkZCMTE1O30KCS5CbGFja3tmaWxsOiM3MjcyNzI7fQoJLkdyZWVue2ZpbGw6IzAz
        OUMyMzt9CgkuUmVke2ZpbGw6I0QxMUMxQzt9Cgkuc3Qwe29wYWNpdHk6MC43NTt9Cgkuc3Qxe29wYWNp
        dHk6MC41O30KPC9zdHlsZT4NCiAgPGcgaWQ9Ilpvb20iPg0KICAgIDxwYXRoIGQ9Ik0yNy43LDI1LjNM
        MjAuNSwxOGMxLTEuNCwxLjUtMy4yLDEuNS01YzAtNS00LTktOS05cy05LDQtOSw5YzAsNSw0LDksOSw5
        YzEuOSwwLDMuNi0wLjYsNS0xLjVsNy4zLDcuMyAgIGMwLjMsMC4zLDAuOSwwLjMsMS4yLDBsMS4yLTEu
        MkMyOC4xLDI2LjIsMjguMSwyNS42LDI3LjcsMjUuM3ogTTYsMTNjMC0zLjksMy4xLTcsNy03czcsMy4x
        LDcsN2MwLDMuOS0zLjEsNy03LDdTNiwxNi45LDYsMTN6IiBjbGFzcz0iQmxhY2siIC8+DQogIDwvZz4N
        Cjwvc3ZnPgs=
</value>
  </data>
  <data name="barCkTreeLine.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAIkDAAAC77u/
        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkdyZWVue2ZpbGw6IzAzOUMyMzt9Cgku
        QmxhY2t7ZmlsbDojNzI3MjcyO30KCS5SZWR7ZmlsbDojRDExQzFDO30KCS5ZZWxsb3d7ZmlsbDojRkZC
        MTE1O30KCS5CbHVle2ZpbGw6IzExNzdENzt9CgkuV2hpdGV7ZmlsbDojRkZGRkZGO30KCS5zdDB7b3Bh
        Y2l0eTowLjU7fQoJLnN0MXtvcGFjaXR5OjAuNzU7fQo8L3N0eWxlPg0KICA8ZyBpZD0iSW5zZXJ0VHJl
        ZVZpZXciPg0KICAgIDxwYXRoIGQ9Ik0xMyw4SDVDNC40LDgsNCw3LjYsNCw3VjNjMC0wLjUsMC40LTEs
        MS0xaDhjMC42LDAsMSwwLjUsMSwxdjRDMTQsNy42LDEzLjYsOCwxMyw4eiBNMjYsMTd2LTQgICBjMC0w
        LjYtMC41LTEtMS0xaC04Yy0wLjUsMC0xLDAuNC0xLDF2NGMwLDAuNSwwLjUsMSwxLDFoOEMyNS41LDE4
        LDI2LDE3LjUsMjYsMTd6IE0yNiwyN3YtNGMwLTAuNS0wLjUtMS0xLTFoLThjLTAuNSwwLTEsMC41LTEs
        MSAgIHY0YzAsMC41LDAuNSwxLDEsMWg4QzI1LjUsMjgsMjYsMjcuNSwyNiwyN3oiIGNsYXNzPSJZZWxs
        b3ciIC8+DQogICAgPHBvbHlnb24gcG9pbnRzPSIxNCwxNiAxNCwxNCAxMCwxNCAxMCwxMCA4LDEwIDgs
        MjYgMTQsMjYgMTQsMjQgMTAsMjQgMTAsMTYgICIgY2xhc3M9IkJsYWNrIiAvPg0KICA8L2c+DQo8L3N2
        Zz4L
</value>
  </data>
</root>
WinFrmUI/HStation.WinFrmUI.Xhs.Core/01-home/01-project/HomeXhsProjectTreeViewModel.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,56 @@
namespace HStation.WinFrmUI
{
    /// <summary>
    ///
    /// </summary>
    public class HomeXhsProjectTreeViewModel
    {
        /// <summary>
        ///
        /// </summary>
        public HomeXhsProjectTreeViewModel() { }
        /// <summary>
        ///
        /// </summary>
        public HomeXhsProjectTreeViewModel(XhsProjectStdDto rhs)
        {
            this.ID = rhs.ID;
            this.ParentID = rhs.ParentID;
            this.Name = rhs.Name;
            this.SortCode = rhs.SortCode;
            this.Description = rhs.Description;
            this.Project = rhs;
        }
        /// <summary>
        /// ID
        /// </summary>
        public long ID { get; set; }
        /// <summary>
        /// ParentID
        /// </summary>
        public long ParentID { get; set; }
        /// <summary>
        /// åç§°
        /// </summary>
        public string Name { get; set; }
        /// <summary>
        /// æŽ’序码
        /// </summary>
        public int SortCode { get; set; }
        /// <summary>
        /// è¯´æ˜Ž
        /// </summary>
        public string Description { get; set; }
        /// <summary>
        /// é¡¹ç›®
        /// </summary>
        public XhsProjectStdDto Project { get; set; }
    }
}
WinFrmUI/HStation.WinFrmUI.Xhs.Core/01-home/02-map/IMapViewProjectListContainer.cs
WinFrmUI/HStation.WinFrmUI.Xhs.Core/01-home/02-map/IMapViewProjectListEvents.cs
WinFrmUI/HStation.WinFrmUI.Xhs.Core/01-home/02-map/MapProjectViewModel.cs
WinFrmUI/HStation.WinFrmUI.Xhs.Core/01-home/02-map/MapViewProjectListCallBackObj.cs
WinFrmUI/HStation.WinFrmUI.Xhs.Core/01-home/02-map/MapViewProjectListContainer.Designer.cs
WinFrmUI/HStation.WinFrmUI.Xhs.Core/01-home/02-map/MapViewProjectListContainer.cs
WinFrmUI/HStation.WinFrmUI.Xhs.Core/01-home/02-map/MapViewProjectListContainer.resx
WinFrmUI/HStation.WinFrmUI.Xhs.Core/01-home/02-map/MapViewProjectListUrlHelper.cs
WinFrmUI/HStation.WinFrmUI.Xhs.Core/01-home/03-property/HomeXhsProjectPropertyCtrl.Designer.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,290 @@
namespace HStation.WinFrmUI
{
    partial class HomeXhsProjectPropertyCtrl
    {
        /// <summary>
        /// å¿…需的设计器变量。
        /// </summary>
        private System.ComponentModel.IContainer components = null;
        /// <summary>
        /// æ¸…理所有正在使用的资源。
        /// </summary>
        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }
        #region ç»„件设计器生成的代码
        /// <summary>
        /// è®¾è®¡å™¨æ”¯æŒæ‰€éœ€çš„æ–¹æ³• - ä¸è¦
        /// ä½¿ç”¨ä»£ç ç¼–辑器修改此方法的内容。
        /// </summary>
        private void InitializeComponent()
        {
            components = new Container();
            ComponentResourceManager resources = new ComponentResourceManager(typeof(HomeXhsProjectPropertyCtrl));
            DevExpress.Utils.SuperToolTip superToolTip1 = new DevExpress.Utils.SuperToolTip();
            DevExpress.Utils.ToolTipTitleItem toolTipTitleItem1 = new DevExpress.Utils.ToolTipTitleItem();
            DevExpress.Utils.ToolTipItem toolTipItem1 = new DevExpress.Utils.ToolTipItem();
            layoutControl1 = new DevExpress.XtraLayout.LayoutControl();
            propertyDescriptionControl1 = new DevExpress.XtraVerticalGrid.PropertyDescriptionControl();
            propertyGridControl1 = new DevExpress.XtraVerticalGrid.PropertyGridControl();
            layoutControlGroup1 = new DevExpress.XtraLayout.LayoutControlGroup();
            layoutProperty = new DevExpress.XtraLayout.LayoutControlItem();
            splitterItem1 = new DevExpress.XtraLayout.SplitterItem();
            layoutDescription = new DevExpress.XtraLayout.LayoutControlItem();
            barManager1 = new DevExpress.XtraBars.BarManager(components);
            bar1 = new DevExpress.XtraBars.Bar();
            barBtnExpandAll = new DevExpress.XtraBars.BarButtonItem();
            barBtnCollpseAll = new DevExpress.XtraBars.BarButtonItem();
            barBtnHelp = new DevExpress.XtraBars.BarButtonItem();
            barDockControlTop = new DevExpress.XtraBars.BarDockControl();
            barDockControlBottom = new DevExpress.XtraBars.BarDockControl();
            barDockControlLeft = new DevExpress.XtraBars.BarDockControl();
            barDockControlRight = new DevExpress.XtraBars.BarDockControl();
            ((ISupportInitialize)layoutControl1).BeginInit();
            layoutControl1.SuspendLayout();
            ((ISupportInitialize)propertyGridControl1).BeginInit();
            ((ISupportInitialize)layoutControlGroup1).BeginInit();
            ((ISupportInitialize)layoutProperty).BeginInit();
            ((ISupportInitialize)splitterItem1).BeginInit();
            ((ISupportInitialize)layoutDescription).BeginInit();
            ((ISupportInitialize)barManager1).BeginInit();
            SuspendLayout();
            //
            // layoutControl1
            //
            layoutControl1.Controls.Add(propertyDescriptionControl1);
            layoutControl1.Controls.Add(propertyGridControl1);
            layoutControl1.Dock = DockStyle.Fill;
            layoutControl1.Location = new Point(0, 28);
            layoutControl1.Name = "layoutControl1";
            layoutControl1.OptionsCustomizationForm.DesignTimeCustomizationFormPositionAndSize = new Rectangle(567, 190, 714, 577);
            layoutControl1.Root = layoutControlGroup1;
            layoutControl1.Size = new Size(260, 602);
            layoutControl1.TabIndex = 0;
            layoutControl1.Text = "layoutControl1";
            //
            // propertyDescriptionControl1
            //
            propertyDescriptionControl1.Location = new Point(2, 529);
            propertyDescriptionControl1.Name = "propertyDescriptionControl1";
            propertyDescriptionControl1.PropertyGrid = propertyGridControl1;
            propertyDescriptionControl1.Size = new Size(256, 71);
            propertyDescriptionControl1.StyleController = layoutControl1;
            propertyDescriptionControl1.TabIndex = 5;
            propertyDescriptionControl1.TabStop = false;
            //
            // propertyGridControl1
            //
            propertyGridControl1.Appearance.FocusedCell.BackColor = Color.FromArgb(0, 122, 204);
            propertyGridControl1.Appearance.FocusedCell.ForeColor = Color.White;
            propertyGridControl1.Appearance.FocusedCell.Options.UseBackColor = true;
            propertyGridControl1.Appearance.FocusedCell.Options.UseForeColor = true;
            propertyGridControl1.Appearance.FocusedRow.BackColor = Color.FromArgb(0, 122, 204);
            propertyGridControl1.Appearance.FocusedRow.ForeColor = Color.White;
            propertyGridControl1.Appearance.FocusedRow.Options.UseBackColor = true;
            propertyGridControl1.Appearance.FocusedRow.Options.UseForeColor = true;
            propertyGridControl1.Appearance.ReadOnlyRecordValue.ForeColor = Color.Black;
            propertyGridControl1.Appearance.ReadOnlyRecordValue.Options.UseForeColor = true;
            propertyGridControl1.Appearance.ReadOnlyRow.ForeColor = Color.Black;
            propertyGridControl1.Appearance.ReadOnlyRow.Options.UseForeColor = true;
            propertyGridControl1.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.NoBorder;
            propertyGridControl1.Location = new Point(2, 2);
            propertyGridControl1.Name = "propertyGridControl1";
            propertyGridControl1.OptionsBehavior.PropertySort = DevExpress.XtraVerticalGrid.PropertySort.NoSort;
            propertyGridControl1.OptionsHint.ShowRowHeaderHints = false;
            propertyGridControl1.OptionsView.AllowReadOnlyRowAppearance = DevExpress.Utils.DefaultBoolean.True;
            propertyGridControl1.OptionsView.ShowRootCategories = false;
            propertyGridControl1.RecordWidth = 120;
            propertyGridControl1.RowHeaderWidth = 80;
            propertyGridControl1.Size = new Size(256, 513);
            propertyGridControl1.TabIndex = 4;
            propertyGridControl1.CustomRecordCellEdit += propertyGridControl1_CustomRecordCellEdit;
            propertyGridControl1.CustomDrawRowValueCell += propertyGridControl1_CustomDrawRowValueCell;
            propertyGridControl1.ShowingEditor += propertyGridControl1_ShowingEditor;
            propertyGridControl1.CellValueChanging += propertyGridControl1_CellValueChanging;
            propertyGridControl1.CellValueChanged += propertyGridControl1_CellValueChanged;
            //
            // layoutControlGroup1
            //
            layoutControlGroup1.EnableIndentsWithoutBorders = DevExpress.Utils.DefaultBoolean.True;
            layoutControlGroup1.GroupBordersVisible = false;
            layoutControlGroup1.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] { layoutProperty, splitterItem1, layoutDescription });
            layoutControlGroup1.Name = "Root";
            layoutControlGroup1.Padding = new DevExpress.XtraLayout.Utils.Padding(0, 0, 0, 0);
            layoutControlGroup1.Size = new Size(260, 602);
            layoutControlGroup1.TextVisible = false;
            //
            // layoutProperty
            //
            layoutProperty.Control = propertyGridControl1;
            layoutProperty.Location = new Point(0, 0);
            layoutProperty.Name = "layoutProperty";
            layoutProperty.Size = new Size(260, 517);
            layoutProperty.TextSize = new Size(0, 0);
            layoutProperty.TextVisible = false;
            //
            // splitterItem1
            //
            splitterItem1.AllowHotTrack = true;
            splitterItem1.Location = new Point(0, 517);
            splitterItem1.Name = "splitterItem1";
            splitterItem1.Size = new Size(260, 10);
            //
            // layoutDescription
            //
            layoutDescription.Control = propertyDescriptionControl1;
            layoutDescription.Location = new Point(0, 527);
            layoutDescription.Name = "layoutDescription";
            layoutDescription.Size = new Size(260, 75);
            layoutDescription.TextSize = new Size(0, 0);
            layoutDescription.TextVisible = false;
            //
            // barManager1
            //
            barManager1.Bars.AddRange(new DevExpress.XtraBars.Bar[] { bar1 });
            barManager1.DockControls.Add(barDockControlTop);
            barManager1.DockControls.Add(barDockControlBottom);
            barManager1.DockControls.Add(barDockControlLeft);
            barManager1.DockControls.Add(barDockControlRight);
            barManager1.Form = this;
            barManager1.Items.AddRange(new DevExpress.XtraBars.BarItem[] { barBtnHelp, barBtnExpandAll, barBtnCollpseAll });
            barManager1.MaxItemId = 15;
            //
            // bar1
            //
            bar1.BarAppearance.Hovered.BorderColor = Color.FromArgb(0, 122, 204);
            bar1.BarAppearance.Hovered.Options.UseBorderColor = true;
            bar1.BarAppearance.Pressed.BorderColor = Color.FromArgb(0, 122, 204);
            bar1.BarAppearance.Pressed.Options.UseBorderColor = true;
            bar1.BarName = "Tools";
            bar1.CanDockStyle = DevExpress.XtraBars.BarCanDockStyle.Top;
            bar1.DockCol = 0;
            bar1.DockRow = 0;
            bar1.DockStyle = DevExpress.XtraBars.BarDockStyle.Top;
            bar1.FloatLocation = new Point(1899, 679);
            bar1.LinksPersistInfo.AddRange(new DevExpress.XtraBars.LinkPersistInfo[] { new DevExpress.XtraBars.LinkPersistInfo(barBtnExpandAll), new DevExpress.XtraBars.LinkPersistInfo(barBtnCollpseAll), new DevExpress.XtraBars.LinkPersistInfo(barBtnHelp) });
            bar1.OptionsBar.AllowQuickCustomization = false;
            bar1.OptionsBar.DrawBorder = false;
            bar1.OptionsBar.RotateWhenVertical = false;
            bar1.OptionsBar.UseWholeRow = true;
            bar1.Text = "Tools";
            //
            // barBtnExpandAll
            //
            barBtnExpandAll.Caption = "全部展开";
            barBtnExpandAll.Id = 13;
            barBtnExpandAll.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barBtnExpandAll.ImageOptions.SvgImage");
            barBtnExpandAll.ImageOptions.SvgImageSize = new Size(20, 20);
            barBtnExpandAll.Name = "barBtnExpandAll";
            barBtnExpandAll.ItemClick += barBtnExpandAll_ItemClick;
            //
            // barBtnCollpseAll
            //
            barBtnCollpseAll.Caption = "全部折叠";
            barBtnCollpseAll.Id = 14;
            barBtnCollpseAll.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barBtnCollpseAll.ImageOptions.SvgImage");
            barBtnCollpseAll.ImageOptions.SvgImageSize = new Size(20, 20);
            barBtnCollpseAll.Name = "barBtnCollpseAll";
            barBtnCollpseAll.ItemClick += barBtnCollpseAll_ItemClick;
            //
            // barBtnHelp
            //
            barBtnHelp.Caption = "描述信息";
            barBtnHelp.Id = 2;
            barBtnHelp.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barBtnHelp.ImageOptions.SvgImage");
            barBtnHelp.ImageOptions.SvgImageSize = new Size(20, 20);
            barBtnHelp.Name = "barBtnHelp";
            toolTipTitleItem1.Appearance.Image = (Image)resources.GetObject("resource.Image");
            toolTipTitleItem1.Appearance.Options.UseImage = true;
            toolTipTitleItem1.ImageOptions.Image = (Image)resources.GetObject("resource.Image1");
            toolTipItem1.LeftIndent = 6;
            toolTipItem1.Text = "描述信息";
            superToolTip1.Items.Add(toolTipTitleItem1);
            superToolTip1.Items.Add(toolTipItem1);
            barBtnHelp.SuperTip = superToolTip1;
            barBtnHelp.ItemClick += barBtnHelp_ItemClick;
            //
            // barDockControlTop
            //
            barDockControlTop.CausesValidation = false;
            barDockControlTop.Dock = DockStyle.Top;
            barDockControlTop.Location = new Point(0, 0);
            barDockControlTop.Manager = barManager1;
            barDockControlTop.Size = new Size(260, 28);
            //
            // barDockControlBottom
            //
            barDockControlBottom.CausesValidation = false;
            barDockControlBottom.Dock = DockStyle.Bottom;
            barDockControlBottom.Location = new Point(0, 630);
            barDockControlBottom.Manager = barManager1;
            barDockControlBottom.Size = new Size(260, 0);
            //
            // barDockControlLeft
            //
            barDockControlLeft.CausesValidation = false;
            barDockControlLeft.Dock = DockStyle.Left;
            barDockControlLeft.Location = new Point(0, 28);
            barDockControlLeft.Manager = barManager1;
            barDockControlLeft.Size = new Size(0, 602);
            //
            // barDockControlRight
            //
            barDockControlRight.CausesValidation = false;
            barDockControlRight.Dock = DockStyle.Right;
            barDockControlRight.Location = new Point(260, 28);
            barDockControlRight.Manager = barManager1;
            barDockControlRight.Size = new Size(0, 602);
            //
            // HomeXhsProjectPropertyCtrl
            //
            AutoScaleDimensions = new SizeF(7F, 14F);
            AutoScaleMode = AutoScaleMode.Font;
            Controls.Add(layoutControl1);
            Controls.Add(barDockControlLeft);
            Controls.Add(barDockControlRight);
            Controls.Add(barDockControlBottom);
            Controls.Add(barDockControlTop);
            Name = "HomeXhsProjectPropertyCtrl";
            Size = new Size(260, 630);
            ((ISupportInitialize)layoutControl1).EndInit();
            layoutControl1.ResumeLayout(false);
            ((ISupportInitialize)propertyGridControl1).EndInit();
            ((ISupportInitialize)layoutControlGroup1).EndInit();
            ((ISupportInitialize)layoutProperty).EndInit();
            ((ISupportInitialize)splitterItem1).EndInit();
            ((ISupportInitialize)layoutDescription).EndInit();
            ((ISupportInitialize)barManager1).EndInit();
            ResumeLayout(false);
            PerformLayout();
        }
        #endregion
        private DevExpress.XtraLayout.LayoutControl layoutControl1;
        private DevExpress.XtraLayout.LayoutControlGroup layoutControlGroup1;
        private DevExpress.XtraVerticalGrid.PropertyDescriptionControl propertyDescriptionControl1;
        private DevExpress.XtraLayout.LayoutControlItem layoutProperty;
        private DevExpress.XtraBars.BarDockControl barDockControlTop;
        private DevExpress.XtraBars.BarDockControl barDockControlBottom;
        private DevExpress.XtraBars.BarDockControl barDockControlLeft;
        private DevExpress.XtraBars.BarDockControl barDockControlRight;
        private DevExpress.XtraLayout.SplitterItem splitterItem1;
        private DevExpress.XtraLayout.LayoutControlItem layoutDescription;
        private DevExpress.XtraBars.BarManager barManager1;
        private DevExpress.XtraVerticalGrid.PropertyGridControl propertyGridControl1;
        private DevExpress.XtraBars.BarButtonItem barBtnHelp;
        private DevExpress.XtraBars.Bar bar1;
        private DevExpress.XtraBars.BarButtonItem barBtnExpandAll;
        private DevExpress.XtraBars.BarButtonItem barBtnCollpseAll;
    }
}
WinFrmUI/HStation.WinFrmUI.Xhs.Core/01-home/03-property/HomeXhsProjectPropertyCtrl.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,239 @@
using DevExpress.XtraBars;
using DevExpress.XtraEditors;
using DevExpress.XtraEditors.Repository;
using DevExpress.XtraLayout.Utils;
using DevExpress.XtraVerticalGrid.Events;
namespace HStation.WinFrmUI
{
    public partial class HomeXhsProjectPropertyCtrl : XtraUserControl
    {
        public HomeXhsProjectPropertyCtrl()
        {
            InitializeComponent();
            this.layoutControl1.SetupLayoutControl();
            SetDescriptionVisible(true);//默认设置属性描述面板显示
        }
        /// <summary>
        /// ç»‘定对象
        /// </summary>
        public HomeXhsProjectPropertyViewModel SelectedObject
        {
            get
            {
                return this.propertyGridControl1.SelectedObject as HomeXhsProjectPropertyViewModel;
            }
            set
            {
                this.propertyGridControl1.SelectedObject = value;
                OnChanged();
            }
        }
        //改变触发
        protected virtual void OnChanged()
        {
            if (this.SelectedObject == null)
            {
            }
            else
            {
            }
        }
        /// <summary>
        /// é‡æ–°ä»Žæ•°æ®æºä¸­è¯»å–数据,外观恢复刚开始加载的样子
        /// </summary>
        public void UpdateData()
        {
            this.propertyGridControl1.UpdateData();
        }
        /// <summary>
        /// æ›´æ–°æ•°æ®ï¼Œæ ·å¼ä¸å˜
        /// </summary>
        public void UpdateRows()
        {
            this.propertyGridControl1.UpdateRows();
        }
        //设置描述控件的可见性
        private void SetDescriptionVisible(bool isVisible)
        {
            var visible = isVisible ? LayoutVisibility.Always : LayoutVisibility.Never;
            this.layoutDescription.Visibility = this.splitterItem1.Visibility = visible;
        }
        //自定义属性值显示内容
        private void propertyGridControl1_CustomDrawRowValueCell(object sender, CustomDrawRowValueCellEventArgs e)
        {
            var rowTypeFullName = e.Row.Properties.RowType.FullName;
            if (rowTypeFullName == typeof(DateTime).FullName)
            {
                e.CellText = ((DateTime)e.Properties.Value).ToString("yyyy-MM-dd HH:mm:ss");
            }
            else
            {
                var descriptor = this.propertyGridControl1.GetPropertyDescriptor(e.Row);
                var displayUnit = (DisplayUnitAttribute)descriptor.Attributes[typeof(DisplayUnitAttribute)];
                if (displayUnit != null)
                {
                    if (e.Properties.Value != null)
                    {
                        e.CellText = e.Properties.Value.ToString() + displayUnit.Unit;
                    }
                }
            }
        }
        //属性编辑框的显示与取消
        private void propertyGridControl1_ShowingEditor(object sender, CancelEventArgs e)
        {
            var rowTypeFullName = this.propertyGridControl1.FocusedRow.Properties.RowType.FullName;
            var fieldName = this.propertyGridControl1.FocusedRow.Properties.FieldName.Split(new char[] { '.' }).Last();
            if (rowTypeFullName == typeof(Image).FullName)
            {
                e.Cancel = true;
                return;
            }
            var descriptor = this.propertyGridControl1.GetPropertyDescriptor(this.propertyGridControl1.FocusedRow);
            var showEditor = (ShowEditorAttribute)descriptor.Attributes[typeof(ShowEditorAttribute)];
            if (showEditor != null)
            {
                if (!showEditor.ShowEditor)
                {
                    e.Cancel = true;
                    return;
                }
            }
        }
        //行标题,描述,编辑框
        private void propertyGridControl1_CustomRecordCellEdit(object sender, GetCustomRowCellEditEventArgs e)
        {
            var fieldName = e.Row.Properties.FieldName.Split(new char[] { '.' }).Last();
            var descriptor = this.propertyGridControl1.GetPropertyDescriptor(e.Row);
            var rowTypeFullName = e.Row.Properties.RowType.FullName;
            #region å±žæ€§æ˜¾ç¤ºåç§°å’Œæè¿°
            //名称
            var attri_caption = (DisplayNameAttribute)descriptor.Attributes[typeof(DisplayNameAttribute)];
            if (attri_caption != null && !string.IsNullOrEmpty(attri_caption.DisplayName))
            {
                e.Row.Properties.Caption = attri_caption.DisplayName;
            }
            //备注
            if (e.Row.Properties.Value == null)
            {
                e.Row.Properties.ToolTip = string.Empty;
            }
            else
            {
                if (e.Row.Properties.RowType.IsEnum)
                {
                    e.Row.Properties.ToolTip = ((Enum)(e.Row.Properties.Value)).GetDisplayText();
                }
                else if (e.Row.Properties.RowType.FullName == typeof(DateTime).FullName)
                {
                    e.Row.Properties.ToolTip = ((DateTime)e.Row.Properties.Value).ToString("yyyy-MM-dd HH:mm:ss");
                }
                else if (e.Row.Properties.RowType.FullName == typeof(Image).FullName)
                {
                    e.Row.Properties.ToolTip = string.Empty;
                }
                else
                {
                    e.Row.Properties.ToolTip = e.Row.Properties.Value.ToString();
                }
            }
            #endregion
            #region bool
            if (rowTypeFullName == typeof(bool).FullName)
            {
                var ckEdit = new RepositoryItemCheckEdit();
                ckEdit.CheckStyle = DevExpress.XtraEditors.Controls.CheckStyles.Standard;
                if (e.Row.Properties.ReadOnly == true)
                {
                    ckEdit.ReadOnly = true;
                }
                e.RepositoryItem = ckEdit;
            }
            #endregion
            #region å¯Œæ–‡æœ¬
            var attri_multi = (MultiTextAttribute)descriptor.Attributes[typeof(MultiTextAttribute)];
            if (attri_multi != null)
            {
                var memoEdit = new RepositoryItemMemoEdit();
                if (e.Row.Properties.ReadOnly == true)
                {
                    memoEdit.ReadOnly = true;
                }
                e.RepositoryItem = memoEdit;
            }
            #endregion
            #region å›¾ç‰‡
            if (rowTypeFullName == typeof(Image).FullName)
            {
                var picEdit = new RepositoryItemPictureEdit();
                picEdit.ReadOnly = true;
                picEdit.NullText = "空";
                e.RepositoryItem = picEdit;
                e.Row.Expanded = true;
            }
            #endregion
        }
        //属性值正在改变
        void propertyGridControl1_CellValueChanging(object sender, DevExpress.XtraVerticalGrid.Events.CellValueChangedEventArgs e)
        {
        }
        //属性值改变,更新地图和JsonModel对象
        void propertyGridControl1_CellValueChanged(object sender, DevExpress.XtraVerticalGrid.Events.CellValueChangedEventArgs e)
        {
            var fieldName = e.Row.Properties.FieldName.Split(new char[] { '.' }).Last();
            var descriptor = this.propertyGridControl1.GetPropertyDescriptor(e.Row);
        }
        // æè¿°
        private void barBtnHelp_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            var visible = this.splitterItem1.Visibility == LayoutVisibility.Always ? false : true;
            SetDescriptionVisible(visible);
        }
        //全部展开
        private void barBtnExpandAll_ItemClick(object sender, ItemClickEventArgs e)
        {
            this.propertyGridControl1.ExpandAllRows();
        }
        //全部折叠
        private void barBtnCollpseAll_ItemClick(object sender, ItemClickEventArgs e)
        {
            this.propertyGridControl1.CollapseAllRows();
        }
    }
}
WinFrmUI/HStation.WinFrmUI.Xhs.Core/01-home/03-property/HomeXhsProjectPropertyCtrl.resx
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,217 @@
<?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="barManager1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
    <value>17, 17</value>
  </metadata>
  <assembly alias="DevExpress.Data.v23.2" name="DevExpress.Data.v23.2, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
  <data name="barBtnExpandAll.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAALACAAAC77u/
        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
        Y2U9InByZXNlcnZlIiBpZD0iRXhwYW5kX0ZpZWxkIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3
        IDAgMCAzMiAzMiI+DQogIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CgkuQmxhY2t7ZmlsbDojNzI3Mjcy
        O30KCS5HcmVlbntmaWxsOiMwMzlDMjM7fQoJLnN0MHtvcGFjaXR5OjAuNzU7fQo8L3N0eWxlPg0KICA8
        cG9seWdvbiBwb2ludHM9IjE0LDYgMTAsNiAxMCwyIDYsMiA2LDYgMiw2IDIsMTAgNiwxMCA2LDE0IDEw
        LDE0IDEwLDEwIDE0LDEwICIgY2xhc3M9IkdyZWVuIiAvPg0KICA8ZyBjbGFzcz0ic3QwIj4NCiAgICA8
        cGF0aCBkPSJNMjIsNmgxMHYySDIyVjZ6IE0yMiwxMmgxMHYtMkgyMlYxMnogTTIyLDIwaDEwdi0ySDIy
        VjIweiBNMjIsMjRoMTB2LTJIMjJWMjR6IiBjbGFzcz0iQmxhY2siIC8+DQogIDwvZz4NCiAgPHBhdGgg
        ZD0iTTE4LDJoMTR2MkgxOFYyeiBNMTgsMTZoMTR2LTJIMThWMTZ6IE0xOCwyOGgxNHYtMkgxOFYyOHoi
        IGNsYXNzPSJCbGFjayIgLz4NCjwvc3ZnPgs=
</value>
  </data>
  <data name="barBtnCollpseAll.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAIcCAAAC77u/
        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
        Y2U9InByZXNlcnZlIiBpZD0iQ29sbGFwc2VfRmllbGQiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpu
        ZXcgMCAwIDMyIDMyIj4NCiAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5CbGFja3tmaWxsOiM3Mjcy
        NzI7fQoJLlJlZHtmaWxsOiNEMTFDMUM7fQoJLnN0MHtvcGFjaXR5OjAuNzU7fQo8L3N0eWxlPg0KICA8
        cmVjdCB4PSIyIiB5PSI2IiB3aWR0aD0iMTIiIGhlaWdodD0iNCIgY2xhc3M9IlJlZCIgLz4NCiAgPGcg
        Y2xhc3M9InN0MCI+DQogICAgPHBhdGggZD0iTTIyLDZoMTB2MkgyMlY2eiBNMjIsMTJoMTB2LTJIMjJW
        MTJ6IE0yMiwyMGgxMHYtMkgyMlYyMHogTTIyLDI0aDEwdi0ySDIyVjI0eiIgY2xhc3M9IkJsYWNrIiAv
        Pg0KICA8L2c+DQogIDxwYXRoIGQ9Ik0xOCwyaDE0djJIMThWMnogTTE4LDE2aDE0di0ySDE4VjE2eiBN
        MTgsMjhoMTR2LTJIMThWMjh6IiBjbGFzcz0iQmxhY2siIC8+DQo8L3N2Zz4L
</value>
  </data>
  <data name="barBtnHelp.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAABsDAAAC77u/
        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLlllbGxvd3tmaWxsOiNGRkIxMTU7fQoJ
        LlJlZHtmaWxsOiNEMTFDMUM7fQoJLkJsdWV7ZmlsbDojMTE3N0Q3O30KCS5HcmVlbntmaWxsOiMwMzlD
        MjM7fQoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9CgkuV2hpdGV7ZmlsbDojRkZGRkZGO30KCS5zdDB7b3Bh
        Y2l0eTowLjU7fQoJLnN0MXtkaXNwbGF5Om5vbmU7fQoJLnN0MntkaXNwbGF5OmlubGluZTtmaWxsOiMw
        MzlDMjM7fQoJLnN0M3tkaXNwbGF5OmlubGluZTtmaWxsOiNEMTFDMUM7fQoJLnN0NHtkaXNwbGF5Omlu
        bGluZTtmaWxsOiM3MjcyNzI7fQo8L3N0eWxlPg0KICA8ZyBpZD0iQWJvdXQiPg0KICAgIDxwYXRoIGQ9
        Ik0xNiwyQzguMywyLDIsOC4zLDIsMTZzNi4zLDE0LDE0LDE0czE0LTYuMywxNC0xNFMyMy43LDIsMTYs
        MnogTTE2LDZjMS4xLDAsMiwwLjksMiwycy0wLjksMi0yLDJzLTItMC45LTItMiAgIFMxNC45LDYsMTYs
        NnogTTIwLDI0aC04di0yaDJ2LThoLTJ2LTJoMmg0djEwaDJWMjR6IiBjbGFzcz0iQmx1ZSIgLz4NCiAg
        PC9nPg0KPC9zdmc+Cw==
</value>
  </data>
  <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
  <data name="resource.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACR0RVh0VGl0
        bGUAQ29tbWVudDtUb29sdGlwO0hpbnQ7VGlwO0Nsb3Vk08HbyQAAAm9JREFUOE91k0lMU1EUhm8QJ6xY
        QIWlW4kL3GAoGIIaF7rRDQsFBUUKBLFaQIK0FlocVpo40DQyU1rKIIQhYNR0oVgtpWUSlCJpcGhNQMRo
        dPV77nsPUkBv8uX/z7nn/vct3mW0QohQYqPEJmKzxBZiKxEmsY2QSfC9EFbR4rEb2kZhaB2TGCGoto1A
        T17PtWUEFTYPaBblLW6UW90orXs5SAFhTGN2w7P0B57vIm6JYc6iiCuIIcL57TdKGpyggB2sqNYJFzXa
        ZxZFvBLB9Zq+/ctPqEyDPCCC5T14AUfgF5omFiTmBTWPB9fzUk2etN+3hAt37TwgiqXdfornvh8wDQeQ
        VeNC3JVOQVf7oRVvcgVge7uAVH0fD9jJUvUD6KTkW8/moCjpwdxnPw5d7/+vNzzxwTjox4mybh6wi53U
        9sLi/opr3bM4/dCBg5o+nDU5kW58LfgM7qtEn258g9LuD7hj/4RjxY95wG52vKQL1a/8KOzwQtszi8oB
        n6CcG3Sbtpc8UUleQ8rnKvt9OHK5lQdEs6PqDtyzf0SB9Z2IbWrFX1zRKcEv12VdM0jOt/KAGJZSYMNN
        urWYkovbvLjaMY0iUj6Y2zQpoGwUtcAyhcLWaaht76HIMYtfkJBVa0/KtSAppxmJHGUzEpRmpKgsUNZN
        4lzdBDGG7PpxJKusiD/fKLD/1H0HBcgJ4V8Pl4oIIpKICd+XaTysbkdm9SgyCEVOA7bHptfQ3h6+T/D5
        UKbT6dZBiz8wefSBS6bE/GbEZ9dDtjftEfWiiA2rZoOLYKSQSHmcskoWe8b4r8PC3NpGMPwAsfyU1x3W
        6XTsLy5SM69xQkG9AAAAAElFTkSuQmCC
</value>
  </data>
  <data name="resource.Image1" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACR0RVh0VGl0
        bGUAQ29tbWVudDtUb29sdGlwO0hpbnQ7VGlwO0Nsb3Vk08HbyQAAAm9JREFUOE91k0lMU1EUhm8QJ6xY
        QIWlW4kL3GAoGIIaF7rRDQsFBUUKBLFaQIK0FlocVpo40DQyU1rKIIQhYNR0oVgtpWUSlCJpcGhNQMRo
        dPV77nsPUkBv8uX/z7nn/vct3mW0QohQYqPEJmKzxBZiKxEmsY2QSfC9EFbR4rEb2kZhaB2TGCGoto1A
        T17PtWUEFTYPaBblLW6UW90orXs5SAFhTGN2w7P0B57vIm6JYc6iiCuIIcL57TdKGpyggB2sqNYJFzXa
        ZxZFvBLB9Zq+/ctPqEyDPCCC5T14AUfgF5omFiTmBTWPB9fzUk2etN+3hAt37TwgiqXdfornvh8wDQeQ
        VeNC3JVOQVf7oRVvcgVge7uAVH0fD9jJUvUD6KTkW8/moCjpwdxnPw5d7/+vNzzxwTjox4mybh6wi53U
        9sLi/opr3bM4/dCBg5o+nDU5kW58LfgM7qtEn258g9LuD7hj/4RjxY95wG52vKQL1a/8KOzwQtszi8oB
        n6CcG3Sbtpc8UUleQ8rnKvt9OHK5lQdEs6PqDtyzf0SB9Z2IbWrFX1zRKcEv12VdM0jOt/KAGJZSYMNN
        urWYkovbvLjaMY0iUj6Y2zQpoGwUtcAyhcLWaaht76HIMYtfkJBVa0/KtSAppxmJHGUzEpRmpKgsUNZN
        4lzdBDGG7PpxJKusiD/fKLD/1H0HBcgJ4V8Pl4oIIpKICd+XaTysbkdm9SgyCEVOA7bHptfQ3h6+T/D5
        UKbT6dZBiz8wefSBS6bE/GbEZ9dDtjftEfWiiA2rZoOLYKSQSHmcskoWe8b4r8PC3NpGMPwAsfyU1x3W
        6XTsLy5SM69xQkG9AAAAAElFTkSuQmCC
</value>
  </data>
</root>
WinFrmUI/HStation.WinFrmUI.Xhs.Core/01-home/03-property/HomeXhsProjectPropertyViewModel.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,68 @@
namespace HStation.WinFrmUI
{
    /// <summary>
    ///
    /// </summary>
    [TypeConverter(typeof(PropertySorter))]
    public class HomeXhsProjectPropertyViewModel
    {
        /// <summary>
        ///
        /// </summary>
        public HomeXhsProjectPropertyViewModel() { }
        /// <summary>
        ///
        /// </summary>
        public HomeXhsProjectPropertyViewModel(XhsProjectStdDto rhs)
        {
            this.NO = rhs.NO;
            this.Name = rhs.Name;
            this.PublishStatus = rhs.PublishStatus;
        }
        /// <summary>
        /// ç¼–号
        /// </summary>
        [DisplayName("编号")]
        [Category("基本信息")]
        [PropertyOrder(1)]
        [Browsable(true)]
        public string NO { get; set; }
        /// <summary>
        /// åç§°
        /// </summary>
        [DisplayName("名称")]
        [Category("基本信息")]
        [PropertyOrder(2)]
        [Browsable(true)]
        public string Name { get; set; }
        /// <summary>
        /// å‘布状态
        /// </summary>
        [DisplayName("发布状态")]
        [Category("基本信息")]
        [PropertyOrder(3)]
        [Browsable(true)]
        public ePublishStatus PublishStatus { get; set; }
    }
}
WinFrmUI/HStation.WinFrmUI.Xhs.Core/01-home/HomeXhsProjectPage.Designer.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,167 @@
namespace HStation.WinFrmUI
{
    partial class HomeXhsProjectPage
    {
        /// <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()
        {
            DevExpress.XtraLayout.ColumnDefinition columnDefinition1 = new DevExpress.XtraLayout.ColumnDefinition();
            DevExpress.XtraLayout.ColumnDefinition columnDefinition2 = new DevExpress.XtraLayout.ColumnDefinition();
            DevExpress.XtraLayout.ColumnDefinition columnDefinition3 = new DevExpress.XtraLayout.ColumnDefinition();
            DevExpress.XtraLayout.RowDefinition rowDefinition1 = new DevExpress.XtraLayout.RowDefinition();
            layoutControl1 = new DevExpress.XtraLayout.LayoutControl();
            mapViewProjectListContainer1 = new MapViewProjectListContainer();
            homeXhsProjectPropertyCtrl1 = new HomeXhsProjectPropertyCtrl();
            homeXhsProjectTreeListCtrl1 = new HomeXhsProjectTreeListCtrl();
            Root = new DevExpress.XtraLayout.LayoutControlGroup();
            layoutControlItem1 = new DevExpress.XtraLayout.LayoutControlItem();
            layoutControlItem2 = new DevExpress.XtraLayout.LayoutControlItem();
            layoutControlItem3 = new DevExpress.XtraLayout.LayoutControlItem();
            ((ISupportInitialize)layoutControl1).BeginInit();
            layoutControl1.SuspendLayout();
            ((ISupportInitialize)Root).BeginInit();
            ((ISupportInitialize)layoutControlItem1).BeginInit();
            ((ISupportInitialize)layoutControlItem2).BeginInit();
            ((ISupportInitialize)layoutControlItem3).BeginInit();
            SuspendLayout();
            //
            // layoutControl1
            //
            layoutControl1.Controls.Add(mapViewProjectListContainer1);
            layoutControl1.Controls.Add(homeXhsProjectPropertyCtrl1);
            layoutControl1.Controls.Add(homeXhsProjectTreeListCtrl1);
            layoutControl1.Dock = DockStyle.Fill;
            layoutControl1.Location = new Point(0, 0);
            layoutControl1.Name = "layoutControl1";
            layoutControl1.Root = Root;
            layoutControl1.Size = new Size(1063, 677);
            layoutControl1.TabIndex = 0;
            layoutControl1.Text = "layoutControl1";
            //
            // mapViewProjectListContainer1
            //
            mapViewProjectListContainer1.Location = new Point(252, 2);
            mapViewProjectListContainer1.Margin = new Padding(3, 2, 3, 2);
            mapViewProjectListContainer1.Name = "mapViewProjectListContainer1";
            mapViewProjectListContainer1.Size = new Size(559, 673);
            mapViewProjectListContainer1.TabIndex = 6;
            //
            // homeXhsProjectPropertyCtrl1
            //
            homeXhsProjectPropertyCtrl1.Location = new Point(815, 2);
            homeXhsProjectPropertyCtrl1.Name = "homeXhsProjectPropertyCtrl1";
            homeXhsProjectPropertyCtrl1.SelectedObject = null;
            homeXhsProjectPropertyCtrl1.Size = new Size(246, 673);
            homeXhsProjectPropertyCtrl1.TabIndex = 5;
            //
            // homeXhsProjectTreeListCtrl1
            //
            homeXhsProjectTreeListCtrl1.Location = new Point(2, 2);
            homeXhsProjectTreeListCtrl1.Name = "homeXhsProjectTreeListCtrl1";
            homeXhsProjectTreeListCtrl1.Size = new Size(246, 673);
            homeXhsProjectTreeListCtrl1.TabIndex = 4;
            homeXhsProjectTreeListCtrl1.SelectProjectEvent += homeXhsProjectTreeListCtrl1_SelectProjectEvent;
            //
            // Root
            //
            Root.EnableIndentsWithoutBorders = DevExpress.Utils.DefaultBoolean.True;
            Root.GroupBordersVisible = false;
            Root.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] { layoutControlItem1, layoutControlItem2, layoutControlItem3 });
            Root.LayoutMode = DevExpress.XtraLayout.Utils.LayoutMode.Table;
            Root.Name = "Root";
            columnDefinition1.SizeType = SizeType.Absolute;
            columnDefinition1.Width = 250D;
            columnDefinition2.SizeType = SizeType.Percent;
            columnDefinition2.Width = 100D;
            columnDefinition3.SizeType = SizeType.Absolute;
            columnDefinition3.Width = 250D;
            Root.OptionsTableLayoutGroup.ColumnDefinitions.AddRange(new DevExpress.XtraLayout.ColumnDefinition[] { columnDefinition1, columnDefinition2, columnDefinition3 });
            rowDefinition1.Height = 100D;
            rowDefinition1.SizeType = SizeType.Percent;
            Root.OptionsTableLayoutGroup.RowDefinitions.AddRange(new DevExpress.XtraLayout.RowDefinition[] { rowDefinition1 });
            Root.Padding = new DevExpress.XtraLayout.Utils.Padding(0, 0, 0, 0);
            Root.Size = new Size(1063, 677);
            Root.TextVisible = false;
            //
            // layoutControlItem1
            //
            layoutControlItem1.Control = homeXhsProjectTreeListCtrl1;
            layoutControlItem1.Location = new Point(0, 0);
            layoutControlItem1.Name = "layoutControlItem1";
            layoutControlItem1.Size = new Size(250, 677);
            layoutControlItem1.TextSize = new Size(0, 0);
            layoutControlItem1.TextVisible = false;
            //
            // layoutControlItem2
            //
            layoutControlItem2.Control = homeXhsProjectPropertyCtrl1;
            layoutControlItem2.Location = new Point(813, 0);
            layoutControlItem2.Name = "layoutControlItem2";
            layoutControlItem2.OptionsTableLayoutItem.ColumnIndex = 2;
            layoutControlItem2.Size = new Size(250, 677);
            layoutControlItem2.TextSize = new Size(0, 0);
            layoutControlItem2.TextVisible = false;
            //
            // layoutControlItem3
            //
            layoutControlItem3.Control = mapViewProjectListContainer1;
            layoutControlItem3.Location = new Point(250, 0);
            layoutControlItem3.Name = "layoutControlItem3";
            layoutControlItem3.OptionsTableLayoutItem.ColumnIndex = 1;
            layoutControlItem3.Size = new Size(563, 677);
            layoutControlItem3.TextSize = new Size(0, 0);
            layoutControlItem3.TextVisible = false;
            //
            // HomeXhsProjectPage
            //
            Appearance.BackColor = SystemColors.Control;
            Appearance.Options.UseBackColor = true;
            AutoScaleDimensions = new SizeF(7F, 14F);
            AutoScaleMode = AutoScaleMode.Font;
            Controls.Add(layoutControl1);
            Name = "HomeXhsProjectPage";
            Size = new Size(1063, 677);
            ((ISupportInitialize)layoutControl1).EndInit();
            layoutControl1.ResumeLayout(false);
            ((ISupportInitialize)Root).EndInit();
            ((ISupportInitialize)layoutControlItem1).EndInit();
            ((ISupportInitialize)layoutControlItem2).EndInit();
            ((ISupportInitialize)layoutControlItem3).EndInit();
            ResumeLayout(false);
        }
        #endregion
        private DevExpress.XtraLayout.LayoutControl layoutControl1;
        private DevExpress.XtraLayout.LayoutControlGroup Root;
        private MapViewProjectListContainer mapViewProjectListContainer1;
        private HomeXhsProjectPropertyCtrl homeXhsProjectPropertyCtrl1;
        private HomeXhsProjectTreeListCtrl homeXhsProjectTreeListCtrl1;
        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem1;
        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem2;
        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem3;
    }
}
WinFrmUI/HStation.WinFrmUI.Xhs.Core/01-home/HomeXhsProjectPage.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,30 @@
namespace HStation.WinFrmUI
{
    public partial class HomeXhsProjectPage : DocumentPage
    {
        public HomeXhsProjectPage()
        {
            InitializeComponent();
            this.layoutControl1.SetupLayoutControl();
            this.PageTitle.Caption = "首页";
        }
        private Lazy<BLL.XhsProjectStd> _bllProjectStd = new(() => new BLL.XhsProjectStd());
        public override async void InitialDataSource()
        {
            var allProjectList = await _bllProjectStd.Value.GetAll();
            this.homeXhsProjectTreeListCtrl1.SetBindingData(allProjectList);
            await this.mapViewProjectListContainer1.InitialContainer();
        }
        private async void homeXhsProjectTreeListCtrl1_SelectProjectEvent(XhsProjectStdDto obj)
        {
            await this.mapViewProjectListContainer1.SelectProject(obj.ID.ToString());
            var vm = new HomeXhsProjectPropertyViewModel(obj);
            this.homeXhsProjectPropertyCtrl1.SelectedObject = vm;
        }
    }
}
WinFrmUI/HStation.WinFrmUI.Xhs.Core/01-home/HomeXhsProjectPage.resx
copy from WinFrmUI/HStation.WinFrmUI.Xhs.Core/01-kpi/01-map/MapViewProjectListContainer.resx copy to WinFrmUI/HStation.WinFrmUI.Xhs.Core/01-home/HomeXhsProjectPage.resx
WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/01-import/GenerateXhsProjectCtrl.Designer.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,128 @@
namespace HStation.WinFrmUI
{
    partial class GenerateXhsProjectCtrl
    {
        /// <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()
        {
            layoutControl1 = new DevExpress.XtraLayout.LayoutControl();
            Root = new DevExpress.XtraLayout.LayoutControlGroup();
            listBoxControl1 = new DevExpress.XtraEditors.ListBoxControl();
            layoutControlItem1 = new DevExpress.XtraLayout.LayoutControlItem();
            progressBarControl1 = new DevExpress.XtraEditors.ProgressBarControl();
            layoutControlItem2 = new DevExpress.XtraLayout.LayoutControlItem();
            ((ISupportInitialize)layoutControl1).BeginInit();
            layoutControl1.SuspendLayout();
            ((ISupportInitialize)Root).BeginInit();
            ((ISupportInitialize)listBoxControl1).BeginInit();
            ((ISupportInitialize)layoutControlItem1).BeginInit();
            ((ISupportInitialize)progressBarControl1.Properties).BeginInit();
            ((ISupportInitialize)layoutControlItem2).BeginInit();
            SuspendLayout();
            //
            // layoutControl1
            //
            layoutControl1.Controls.Add(progressBarControl1);
            layoutControl1.Controls.Add(listBoxControl1);
            layoutControl1.Dock = DockStyle.Fill;
            layoutControl1.Location = new Point(0, 0);
            layoutControl1.Name = "layoutControl1";
            layoutControl1.OptionsCustomizationForm.DesignTimeCustomizationFormPositionAndSize = new Rectangle(988, 216, 650, 400);
            layoutControl1.Root = Root;
            layoutControl1.Size = new Size(721, 505);
            layoutControl1.TabIndex = 0;
            layoutControl1.Text = "layoutControl1";
            //
            // Root
            //
            Root.EnableIndentsWithoutBorders = DevExpress.Utils.DefaultBoolean.True;
            Root.GroupBordersVisible = false;
            Root.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] { layoutControlItem1, layoutControlItem2 });
            Root.Name = "Root";
            Root.Size = new Size(721, 505);
            Root.TextVisible = false;
            //
            // listBoxControl1
            //
            listBoxControl1.Location = new Point(12, 34);
            listBoxControl1.Name = "listBoxControl1";
            listBoxControl1.Size = new Size(697, 459);
            listBoxControl1.StyleController = layoutControl1;
            listBoxControl1.TabIndex = 4;
            //
            // layoutControlItem1
            //
            layoutControlItem1.Control = listBoxControl1;
            layoutControlItem1.Location = new Point(0, 22);
            layoutControlItem1.Name = "layoutControlItem1";
            layoutControlItem1.Size = new Size(701, 463);
            layoutControlItem1.TextSize = new Size(0, 0);
            layoutControlItem1.TextVisible = false;
            //
            // progressBarControl1
            //
            progressBarControl1.Location = new Point(12, 12);
            progressBarControl1.Name = "progressBarControl1";
            progressBarControl1.Size = new Size(697, 18);
            progressBarControl1.StyleController = layoutControl1;
            progressBarControl1.TabIndex = 5;
            //
            // layoutControlItem2
            //
            layoutControlItem2.Control = progressBarControl1;
            layoutControlItem2.Location = new Point(0, 0);
            layoutControlItem2.Name = "layoutControlItem2";
            layoutControlItem2.Size = new Size(701, 22);
            layoutControlItem2.TextSize = new Size(0, 0);
            layoutControlItem2.TextVisible = false;
            //
            // GenerateXhsProjectCtrl
            //
            AutoScaleDimensions = new SizeF(7F, 14F);
            AutoScaleMode = AutoScaleMode.Font;
            Controls.Add(layoutControl1);
            Name = "GenerateXhsProjectCtrl";
            Size = new Size(721, 505);
            ((ISupportInitialize)layoutControl1).EndInit();
            layoutControl1.ResumeLayout(false);
            ((ISupportInitialize)Root).EndInit();
            ((ISupportInitialize)listBoxControl1).EndInit();
            ((ISupportInitialize)layoutControlItem1).EndInit();
            ((ISupportInitialize)progressBarControl1.Properties).EndInit();
            ((ISupportInitialize)layoutControlItem2).EndInit();
            ResumeLayout(false);
        }
        #endregion
        private DevExpress.XtraLayout.LayoutControl layoutControl1;
        private DevExpress.XtraEditors.ProgressBarControl progressBarControl1;
        private DevExpress.XtraEditors.ListBoxControl listBoxControl1;
        private DevExpress.XtraLayout.LayoutControlGroup Root;
        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem1;
        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem2;
    }
}
WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/01-import/GenerateXhsProjectCtrl.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
using DevExpress.XtraEditors;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace HStation.WinFrmUI
{
    public partial class GenerateXhsProjectCtrl : DevExpress.XtraEditors.XtraUserControl
    {
        public GenerateXhsProjectCtrl()
        {
            InitializeComponent();
        }
    }
}
WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/01-import/GenerateXhsProjectCtrl.resx
WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/01-import/ImportXhsProjectCompletedCtrl.Designer.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,62 @@
namespace HStation.WinFrmUI
{
    partial class ImportXhsProjectCompletedCtrl
    {
        /// <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()
        {
            ComponentResourceManager resources = new ComponentResourceManager(typeof(ImportXhsProjectCompletedCtrl));
            pictureEdit1 = new DevExpress.XtraEditors.PictureEdit();
            ((ISupportInitialize)pictureEdit1.Properties).BeginInit();
            SuspendLayout();
            //
            // pictureEdit1
            //
            pictureEdit1.Dock = DockStyle.Fill;
            pictureEdit1.EditValue = resources.GetObject("pictureEdit1.EditValue");
            pictureEdit1.Location = new Point(0, 0);
            pictureEdit1.Name = "pictureEdit1";
            pictureEdit1.Properties.ShowCameraMenuItem = DevExpress.XtraEditors.Controls.CameraMenuItemVisibility.Auto;
            pictureEdit1.Properties.SvgImageSize = new Size(100, 100);
            pictureEdit1.Size = new Size(941, 615);
            pictureEdit1.TabIndex = 0;
            //
            // ImportXhsProjectCompletedCtrl
            //
            AutoScaleDimensions = new SizeF(7F, 14F);
            AutoScaleMode = AutoScaleMode.Font;
            Controls.Add(pictureEdit1);
            Name = "ImportXhsProjectCompletedCtrl";
            Size = new Size(941, 615);
            ((ISupportInitialize)pictureEdit1.Properties).EndInit();
            ResumeLayout(false);
        }
        #endregion
        private DevExpress.XtraEditors.PictureEdit pictureEdit1;
    }
}
WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/01-import/ImportXhsProjectCompletedCtrl.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
namespace HStation.WinFrmUI
{
    public partial class ImportXhsProjectCompletedCtrl : DevExpress.XtraEditors.XtraUserControl
    {
        public ImportXhsProjectCompletedCtrl()
        {
            InitializeComponent();
        }
    }
}
WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/01-import/ImportXhsProjectCompletedCtrl.resx
ÎļþÃû´Ó WinFrmUI/HStation.WinFrmUI.Xhs.Core/04-HomePageMainPanel/XhsProjectTreeList.resx ÐÞ¸Ä
@@ -118,27 +118,23 @@
    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <assembly alias="DevExpress.Data.v23.2" name="DevExpress.Data.v23.2, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
  <data name="BtnImportProject.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
  <data name="pictureEdit1.EditValue" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAOsCAAAC77u/
        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAK4CAAAC77u/
        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLlJlZHtmaWxsOiNEMTFDMUM7fQoJLkJs
        YWNre2ZpbGw6IzcyNzI3Mjt9CgkuQmx1ZXtmaWxsOiMxMTc3RDc7fQoJLkdyZWVue2ZpbGw6IzAzOUMy
        Mzt9CgkuWWVsbG93e2ZpbGw6I0ZGQjExNTt9CgkuV2hpdGV7ZmlsbDojRkZGRkZGO30KCS5zdDB7b3Bh
        Y2l0eTowLjU7fQoJLnN0MXtvcGFjaXR5OjAuNzU7fQoJLnN0MntvcGFjaXR5OjAuMjU7fQo8L3N0eWxl
        Pg0KICA8ZyBpZD0iSW1wb3J0Ij4NCiAgICA8cGF0aCBkPSJNMTAsMTJINlY2aDRWMTJ6IE0yMiwxN3Yx
        djljMCwwLjYtMC40LDEtMSwxSDFjLTAuNiwwLTEtMC40LTEtMVY3YzAtMC42LDAuNC0xLDEtMWgzdjho
        MTRMMjIsMTd6IE0xOCwxOEg0ICAgdjZoMTRWMTh6IiBjbGFzcz0iQmxhY2siIC8+DQogICAgPHBvbHln
        b24gcG9pbnRzPSIzMCw2IDIyLDYgMjIsMiAxNCw4IDIyLDE0IDIyLDEwIDMwLDEwICAiIGNsYXNzPSJH
        cmVlbiIgLz4NCiAgPC9nPg0KPC9zdmc+Cw==
        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLlllbGxvd3tmaWxsOiNGRkIxMTU7fQoJ
        LlJlZHtmaWxsOiNEMTFDMUM7fQoJLkJsdWV7ZmlsbDojMTE3N0Q3O30KCS5HcmVlbntmaWxsOiMwMzlD
        MjM7fQoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9CgkuV2hpdGV7ZmlsbDojRkZGRkZGO30KCS5zdDB7b3Bh
        Y2l0eTowLjU7fQoJLnN0MXtkaXNwbGF5Om5vbmU7fQoJLnN0MntkaXNwbGF5OmlubGluZTtmaWxsOiMw
        MzlDMjM7fQoJLnN0M3tkaXNwbGF5OmlubGluZTtmaWxsOiNEMTFDMUM7fQoJLnN0NHtkaXNwbGF5Omlu
        bGluZTtmaWxsOiM3MjcyNzI7fQo8L3N0eWxlPg0KICA8ZyBpZD0iTWFya0NvbXBsZXRlIj4NCiAgICA8
        cG9seWdvbiBwb2ludHM9IjI3LDQgMTEsMjAgNSwxNCAyLDE3IDExLDI2IDMwLDcgICIgY2xhc3M9Ikdy
        ZWVuIiAvPg0KICA8L2c+DQo8L3N2Zz4L
</value>
  </data>
  <metadata name="bindingSource1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
    <value>17, 17</value>
  </metadata>
</root>
WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/01-import/ImportXhsProjectDlg.Designer.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,391 @@
namespace HStation.WinFrmUI
{
    partial class ImportXhsProjectDlg
    {
        /// <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()
        {
            layoutControl1 = new DevExpress.XtraLayout.LayoutControl();
            btnBack = new DevExpress.XtraEditors.SimpleButton();
            btnNext = new DevExpress.XtraEditors.SimpleButton();
            btnCancel = new DevExpress.XtraEditors.SimpleButton();
            navigationFrame1 = new DevExpress.XtraBars.Navigation.NavigationFrame();
            navPageSelectModelFile = new DevExpress.XtraBars.Navigation.NavigationPage();
            selectXhsProjectModelFileCtrl1 = new SelectXhsProjectModelFileCtrl();
            navPageInputProjectInfo = new DevExpress.XtraBars.Navigation.NavigationPage();
            inputXhsProjectBasicInfoCtrl1 = new InputXhsProjectBasicInfoCtrl();
            navPageSetMapLocation = new DevExpress.XtraBars.Navigation.NavigationPage();
            setXhsProjectMapLocationCtrl1 = new SetXhsProjectMapLocationCtrl();
            navPageGenerateProject = new DevExpress.XtraBars.Navigation.NavigationPage();
            generateXhsProjectCtrl1 = new GenerateXhsProjectCtrl();
            navPageImportCompleted = new DevExpress.XtraBars.Navigation.NavigationPage();
            importXhsProjectCompletedCtrl1 = new ImportXhsProjectCompletedCtrl();
            stepProgressBar1 = new DevExpress.XtraEditors.StepProgressBar();
            stepPbSelectModelFile = new DevExpress.XtraEditors.StepProgressBarItem();
            stepPbInputProjectInfo = new DevExpress.XtraEditors.StepProgressBarItem();
            stepPbSetMapLocation = new DevExpress.XtraEditors.StepProgressBarItem();
            stepPbGenerateProject = new DevExpress.XtraEditors.StepProgressBarItem();
            stepPbImportCompleted = new DevExpress.XtraEditors.StepProgressBarItem();
            Root = new DevExpress.XtraLayout.LayoutControlGroup();
            layoutControlItem1 = new DevExpress.XtraLayout.LayoutControlItem();
            layoutControlItem2 = new DevExpress.XtraLayout.LayoutControlItem();
            layoutControlItem3 = new DevExpress.XtraLayout.LayoutControlItem();
            layoutControlItem4 = new DevExpress.XtraLayout.LayoutControlItem();
            layoutControlItem5 = new DevExpress.XtraLayout.LayoutControlItem();
            emptySpaceItem1 = new DevExpress.XtraLayout.EmptySpaceItem();
            ((ISupportInitialize)layoutControl1).BeginInit();
            layoutControl1.SuspendLayout();
            ((ISupportInitialize)navigationFrame1).BeginInit();
            navigationFrame1.SuspendLayout();
            navPageSelectModelFile.SuspendLayout();
            navPageInputProjectInfo.SuspendLayout();
            navPageSetMapLocation.SuspendLayout();
            navPageGenerateProject.SuspendLayout();
            navPageImportCompleted.SuspendLayout();
            ((ISupportInitialize)stepProgressBar1).BeginInit();
            ((ISupportInitialize)Root).BeginInit();
            ((ISupportInitialize)layoutControlItem1).BeginInit();
            ((ISupportInitialize)layoutControlItem2).BeginInit();
            ((ISupportInitialize)layoutControlItem3).BeginInit();
            ((ISupportInitialize)layoutControlItem4).BeginInit();
            ((ISupportInitialize)layoutControlItem5).BeginInit();
            ((ISupportInitialize)emptySpaceItem1).BeginInit();
            SuspendLayout();
            //
            // layoutControl1
            //
            layoutControl1.Controls.Add(btnBack);
            layoutControl1.Controls.Add(btnNext);
            layoutControl1.Controls.Add(btnCancel);
            layoutControl1.Controls.Add(navigationFrame1);
            layoutControl1.Controls.Add(stepProgressBar1);
            layoutControl1.Dock = DockStyle.Fill;
            layoutControl1.Location = new Point(0, 0);
            layoutControl1.Name = "layoutControl1";
            layoutControl1.OptionsCustomizationForm.DesignTimeCustomizationFormPositionAndSize = new Rectangle(1247, 349, 650, 400);
            layoutControl1.Root = Root;
            layoutControl1.Size = new Size(1113, 695);
            layoutControl1.TabIndex = 0;
            layoutControl1.Text = "layoutControl1";
            //
            // btnBack
            //
            btnBack.Appearance.BackColor = DevExpress.LookAndFeel.DXSkinColors.FillColors.Question;
            btnBack.Appearance.Options.UseBackColor = true;
            btnBack.Location = new Point(745, 661);
            btnBack.Name = "btnBack";
            btnBack.Size = new Size(116, 22);
            btnBack.StyleController = layoutControl1;
            btnBack.TabIndex = 7;
            btnBack.Text = "<上一步";
            btnBack.Click += btnBack_Click;
            //
            // btnNext
            //
            btnNext.Appearance.BackColor = DevExpress.LookAndFeel.DXSkinColors.FillColors.Success;
            btnNext.Appearance.Options.UseBackColor = true;
            btnNext.Location = new Point(865, 661);
            btnNext.Name = "btnNext";
            btnNext.Size = new Size(116, 22);
            btnNext.StyleController = layoutControl1;
            btnNext.TabIndex = 8;
            btnNext.Text = "下一步>";
            btnNext.Click += btnNext_Click;
            //
            // btnCancel
            //
            btnCancel.Appearance.BackColor = DevExpress.LookAndFeel.DXSkinColors.FillColors.Warning;
            btnCancel.Appearance.Options.UseBackColor = true;
            btnCancel.DialogResult = DialogResult.Cancel;
            btnCancel.Location = new Point(985, 661);
            btnCancel.Name = "btnCancel";
            btnCancel.Size = new Size(116, 22);
            btnCancel.StyleController = layoutControl1;
            btnCancel.TabIndex = 9;
            btnCancel.Text = "取消";
            //
            // navigationFrame1
            //
            navigationFrame1.Controls.Add(navPageSelectModelFile);
            navigationFrame1.Controls.Add(navPageInputProjectInfo);
            navigationFrame1.Controls.Add(navPageSetMapLocation);
            navigationFrame1.Controls.Add(navPageGenerateProject);
            navigationFrame1.Controls.Add(navPageImportCompleted);
            navigationFrame1.Location = new Point(12, 120);
            navigationFrame1.Name = "navigationFrame1";
            navigationFrame1.Pages.AddRange(new DevExpress.XtraBars.Navigation.NavigationPageBase[] { navPageSelectModelFile, navPageInputProjectInfo, navPageSetMapLocation, navPageGenerateProject, navPageImportCompleted });
            navigationFrame1.SelectedPage = navPageSelectModelFile;
            navigationFrame1.Size = new Size(1089, 537);
            navigationFrame1.TabIndex = 5;
            navigationFrame1.Text = "navigationFrame1";
            //
            // navPageSelectModelFile
            //
            navPageSelectModelFile.Caption = "navPageSelectModelFile";
            navPageSelectModelFile.Controls.Add(selectXhsProjectModelFileCtrl1);
            navPageSelectModelFile.Name = "navPageSelectModelFile";
            navPageSelectModelFile.Size = new Size(1089, 537);
            //
            // selectXhsProjectModelFileCtrl1
            //
            selectXhsProjectModelFileCtrl1.Dock = DockStyle.Fill;
            selectXhsProjectModelFileCtrl1.Location = new Point(0, 0);
            selectXhsProjectModelFileCtrl1.Name = "selectXhsProjectModelFileCtrl1";
            selectXhsProjectModelFileCtrl1.Size = new Size(1089, 537);
            selectXhsProjectModelFileCtrl1.TabIndex = 0;
            //
            // navPageInputProjectInfo
            //
            navPageInputProjectInfo.Caption = "navPageInputProjectInfo";
            navPageInputProjectInfo.Controls.Add(inputXhsProjectBasicInfoCtrl1);
            navPageInputProjectInfo.Name = "navPageInputProjectInfo";
            navPageInputProjectInfo.Size = new Size(1089, 537);
            //
            // inputXhsProjectBasicInfoCtrl1
            //
            inputXhsProjectBasicInfoCtrl1.Dock = DockStyle.Fill;
            inputXhsProjectBasicInfoCtrl1.Location = new Point(0, 0);
            inputXhsProjectBasicInfoCtrl1.Name = "inputXhsProjectBasicInfoCtrl1";
            inputXhsProjectBasicInfoCtrl1.Size = new Size(1089, 537);
            inputXhsProjectBasicInfoCtrl1.TabIndex = 0;
            //
            // navPageSetMapLocation
            //
            navPageSetMapLocation.Caption = "navPageSetMapLocation";
            navPageSetMapLocation.Controls.Add(setXhsProjectMapLocationCtrl1);
            navPageSetMapLocation.Name = "navPageSetMapLocation";
            navPageSetMapLocation.Size = new Size(1089, 537);
            //
            // setXhsProjectMapLocationCtrl1
            //
            setXhsProjectMapLocationCtrl1.Dock = DockStyle.Fill;
            setXhsProjectMapLocationCtrl1.Location = new Point(0, 0);
            setXhsProjectMapLocationCtrl1.Name = "setXhsProjectMapLocationCtrl1";
            setXhsProjectMapLocationCtrl1.Size = new Size(1089, 537);
            setXhsProjectMapLocationCtrl1.TabIndex = 0;
            //
            // navPageGenerateProject
            //
            navPageGenerateProject.Caption = "navPageGenerateProject";
            navPageGenerateProject.Controls.Add(generateXhsProjectCtrl1);
            navPageGenerateProject.Name = "navPageGenerateProject";
            navPageGenerateProject.Size = new Size(1089, 537);
            //
            // generateXhsProjectCtrl1
            //
            generateXhsProjectCtrl1.Dock = DockStyle.Fill;
            generateXhsProjectCtrl1.Location = new Point(0, 0);
            generateXhsProjectCtrl1.Name = "generateXhsProjectCtrl1";
            generateXhsProjectCtrl1.Size = new Size(1089, 537);
            generateXhsProjectCtrl1.TabIndex = 0;
            //
            // navPageImportCompleted
            //
            navPageImportCompleted.Caption = "navPageImportCompleted";
            navPageImportCompleted.Controls.Add(importXhsProjectCompletedCtrl1);
            navPageImportCompleted.Name = "navPageImportCompleted";
            navPageImportCompleted.Size = new Size(1089, 537);
            //
            // importXhsProjectCompletedCtrl1
            //
            importXhsProjectCompletedCtrl1.Dock = DockStyle.Fill;
            importXhsProjectCompletedCtrl1.Location = new Point(0, 0);
            importXhsProjectCompletedCtrl1.Name = "importXhsProjectCompletedCtrl1";
            importXhsProjectCompletedCtrl1.Size = new Size(1089, 537);
            importXhsProjectCompletedCtrl1.TabIndex = 0;
            //
            // stepProgressBar1
            //
            stepProgressBar1.ContentAlignment = ContentAlignment.MiddleLeft;
            stepProgressBar1.Items.Add(stepPbSelectModelFile);
            stepProgressBar1.Items.Add(stepPbInputProjectInfo);
            stepProgressBar1.Items.Add(stepPbSetMapLocation);
            stepProgressBar1.Items.Add(stepPbGenerateProject);
            stepProgressBar1.Items.Add(stepPbImportCompleted);
            stepProgressBar1.Location = new Point(12, 12);
            stepProgressBar1.Name = "stepProgressBar1";
            stepProgressBar1.SelectedItemIndex = 0;
            stepProgressBar1.Size = new Size(1089, 104);
            stepProgressBar1.StyleController = layoutControl1;
            stepProgressBar1.TabIndex = 4;
            //
            // stepPbSelectModelFile
            //
            stepPbSelectModelFile.ContentBlock2.Caption = "选择模型文件";
            stepPbSelectModelFile.Name = "stepPbSelectModelFile";
            stepPbSelectModelFile.State = DevExpress.XtraEditors.StepProgressBarItemState.Active;
            //
            // stepPbInputProjectInfo
            //
            stepPbInputProjectInfo.ContentBlock2.Caption = "录入项目信息";
            stepPbInputProjectInfo.Name = "stepPbInputProjectInfo";
            //
            // stepPbSetMapLocation
            //
            stepPbSetMapLocation.ContentBlock2.Caption = "设置地图位置";
            stepPbSetMapLocation.Name = "stepPbSetMapLocation";
            //
            // stepPbGenerateProject
            //
            stepPbGenerateProject.ContentBlock2.Caption = "自动生成项目";
            stepPbGenerateProject.Name = "stepPbGenerateProject";
            //
            // stepPbImportCompleted
            //
            stepPbImportCompleted.ContentBlock2.Caption = "项目导入完成";
            stepPbImportCompleted.Name = "stepPbImportCompleted";
            //
            // Root
            //
            Root.EnableIndentsWithoutBorders = DevExpress.Utils.DefaultBoolean.True;
            Root.GroupBordersVisible = false;
            Root.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] { layoutControlItem1, layoutControlItem2, layoutControlItem3, layoutControlItem4, layoutControlItem5, emptySpaceItem1 });
            Root.Name = "Root";
            Root.Size = new Size(1113, 695);
            Root.TextVisible = false;
            //
            // layoutControlItem1
            //
            layoutControlItem1.Control = stepProgressBar1;
            layoutControlItem1.Location = new Point(0, 0);
            layoutControlItem1.Name = "layoutControlItem1";
            layoutControlItem1.Size = new Size(1093, 108);
            layoutControlItem1.TextSize = new Size(0, 0);
            layoutControlItem1.TextVisible = false;
            //
            // layoutControlItem2
            //
            layoutControlItem2.Control = navigationFrame1;
            layoutControlItem2.Location = new Point(0, 108);
            layoutControlItem2.Name = "layoutControlItem2";
            layoutControlItem2.Size = new Size(1093, 541);
            layoutControlItem2.TextSize = new Size(0, 0);
            layoutControlItem2.TextVisible = false;
            //
            // layoutControlItem3
            //
            layoutControlItem3.Control = btnCancel;
            layoutControlItem3.Location = new Point(973, 649);
            layoutControlItem3.MaxSize = new Size(120, 26);
            layoutControlItem3.MinSize = new Size(120, 26);
            layoutControlItem3.Name = "layoutControlItem3";
            layoutControlItem3.Size = new Size(120, 26);
            layoutControlItem3.SizeConstraintsType = DevExpress.XtraLayout.SizeConstraintsType.Custom;
            layoutControlItem3.TextSize = new Size(0, 0);
            layoutControlItem3.TextVisible = false;
            //
            // layoutControlItem4
            //
            layoutControlItem4.Control = btnNext;
            layoutControlItem4.Location = new Point(853, 649);
            layoutControlItem4.MaxSize = new Size(120, 26);
            layoutControlItem4.MinSize = new Size(120, 26);
            layoutControlItem4.Name = "layoutControlItem4";
            layoutControlItem4.Size = new Size(120, 26);
            layoutControlItem4.SizeConstraintsType = DevExpress.XtraLayout.SizeConstraintsType.Custom;
            layoutControlItem4.TextSize = new Size(0, 0);
            layoutControlItem4.TextVisible = false;
            //
            // layoutControlItem5
            //
            layoutControlItem5.Control = btnBack;
            layoutControlItem5.Location = new Point(733, 649);
            layoutControlItem5.MaxSize = new Size(120, 26);
            layoutControlItem5.MinSize = new Size(120, 26);
            layoutControlItem5.Name = "layoutControlItem5";
            layoutControlItem5.Size = new Size(120, 26);
            layoutControlItem5.SizeConstraintsType = DevExpress.XtraLayout.SizeConstraintsType.Custom;
            layoutControlItem5.TextSize = new Size(0, 0);
            layoutControlItem5.TextVisible = false;
            //
            // emptySpaceItem1
            //
            emptySpaceItem1.AllowHotTrack = false;
            emptySpaceItem1.Location = new Point(0, 649);
            emptySpaceItem1.Name = "emptySpaceItem1";
            emptySpaceItem1.Size = new Size(733, 26);
            emptySpaceItem1.TextSize = new Size(0, 0);
            //
            // ImportXhsProjectDlg
            //
            AutoScaleDimensions = new SizeF(7F, 14F);
            AutoScaleMode = AutoScaleMode.Font;
            ClientSize = new Size(1113, 695);
            Controls.Add(layoutControl1);
            Name = "ImportXhsProjectDlg";
            Text = "项目导入";
            ((ISupportInitialize)layoutControl1).EndInit();
            layoutControl1.ResumeLayout(false);
            ((ISupportInitialize)navigationFrame1).EndInit();
            navigationFrame1.ResumeLayout(false);
            navPageSelectModelFile.ResumeLayout(false);
            navPageInputProjectInfo.ResumeLayout(false);
            navPageSetMapLocation.ResumeLayout(false);
            navPageGenerateProject.ResumeLayout(false);
            navPageImportCompleted.ResumeLayout(false);
            ((ISupportInitialize)stepProgressBar1).EndInit();
            ((ISupportInitialize)Root).EndInit();
            ((ISupportInitialize)layoutControlItem1).EndInit();
            ((ISupportInitialize)layoutControlItem2).EndInit();
            ((ISupportInitialize)layoutControlItem3).EndInit();
            ((ISupportInitialize)layoutControlItem4).EndInit();
            ((ISupportInitialize)layoutControlItem5).EndInit();
            ((ISupportInitialize)emptySpaceItem1).EndInit();
            ResumeLayout(false);
        }
        #endregion
        private DevExpress.XtraLayout.LayoutControl layoutControl1;
        private DevExpress.XtraEditors.StepProgressBar stepProgressBar1;
        private DevExpress.XtraLayout.LayoutControlGroup Root;
        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem1;
        private DevExpress.XtraEditors.StepProgressBarItem stepPbSelectModelFile;
        private DevExpress.XtraEditors.StepProgressBarItem stepPbInputProjectInfo;
        private DevExpress.XtraEditors.StepProgressBarItem stepPbSetMapLocation;
        private DevExpress.XtraEditors.StepProgressBarItem stepPbGenerateProject;
        private DevExpress.XtraEditors.StepProgressBarItem stepPbImportCompleted;
        private DevExpress.XtraBars.Navigation.NavigationFrame navigationFrame1;
        private DevExpress.XtraBars.Navigation.NavigationPage navPageSelectModelFile;
        private DevExpress.XtraBars.Navigation.NavigationPage navPageInputProjectInfo;
        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem2;
        private DevExpress.XtraEditors.SimpleButton btnBack;
        private DevExpress.XtraEditors.SimpleButton btnNext;
        private DevExpress.XtraEditors.SimpleButton btnCancel;
        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem3;
        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem4;
        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem5;
        private DevExpress.XtraLayout.EmptySpaceItem emptySpaceItem1;
        private DevExpress.XtraBars.Navigation.NavigationPage navPageSetMapLocation;
        private DevExpress.XtraBars.Navigation.NavigationPage navPageGenerateProject;
        private DevExpress.XtraBars.Navigation.NavigationPage navPageImportCompleted;
        private SelectXhsProjectModelFileCtrl selectXhsProjectModelFileCtrl1;
        private InputXhsProjectBasicInfoCtrl inputXhsProjectBasicInfoCtrl1;
        private SetXhsProjectMapLocationCtrl setXhsProjectMapLocationCtrl1;
        private GenerateXhsProjectCtrl generateXhsProjectCtrl1;
        private ImportXhsProjectCompletedCtrl importXhsProjectCompletedCtrl1;
    }
}
WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/01-import/ImportXhsProjectDlg.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,39 @@
using DevExpress.XtraEditors;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace HStation.WinFrmUI
{
    public partial class ImportXhsProjectDlg : DevExpress.XtraEditors.XtraForm
    {
        public ImportXhsProjectDlg()
        {
            InitializeComponent();
        }
        //上一步
        private void btnBack_Click(object sender, EventArgs e)
        {
            this.navigationFrame1.SelectPrevPage();
            this.stepProgressBar1.SelectPrevious();
        }
        //下一步
        private void btnNext_Click(object sender, EventArgs e)
        {
            this.navigationFrame1.SelectNextPage();
            this.stepProgressBar1.SelectNext();
        }
    }
}
WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/01-import/ImportXhsProjectDlg.resx
copy from WinFrmUI/HStation.WinFrmUI.Xhs.Core/04-HomePageMainPanel/HomePageMainPanel.resx copy to WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/01-import/ImportXhsProjectDlg.resx
WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/01-import/ImportXhsProjectHelper.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,214 @@
namespace HStation.WinFrmUI
{
    /// <summary>
    ///
    /// </summary>
    public class ImportXhsProjectHelper
    {
        private const string _tempFolder = "project-import-temp";
        /// <summary>
        /// å¯¼å…¥
        /// </summary>
        /// <param name="vm">通用视图Model</param>
        /// <param name="feedBackMsg">信息反馈</param>
        /// <param name="feedBackProgress">进度反馈</param>
        /// <returns></returns>
        public static async Task<bool> Import(ImportXhsProjectViewModel vm, Action<string> feedBackMsg, Action<int, int> feedBackProgress)
        {
            #region æ–‡ä»¶è§£æž
            var tempFolderPath = Path.Combine(Yw.Service.ConfigHelper.DataPath, HStation.Settings.XhsParasHelper.Xhs.DataFolder, _tempFolder);
            var bol = Yw.FileFolderZipHelper.UnZip(vm.ZipFile, tempFolderPath, null);
            if (!bol)
            {
                feedBackMsg?.Invoke("模型文件解析失败");
                return bol;
            }
            var tempDirectoryInfo = new DirectoryInfo(tempFolderPath);
            var allFileInfoList = tempDirectoryInfo.GetFiles();
            if (allFileInfoList == null || allFileInfoList.Count() < 1)
            {
                feedBackMsg?.Invoke("模型文件解析失败");
                return bol;
            }
            #endregion
            #region æ°´åŠ›æ¨¡åž‹
            var jsonFileInfo = allFileInfoList.Where(x => x.Extension == ".json").FirstOrDefault();
            if (jsonFileInfo == null)
            {
                feedBackMsg?.Invoke("水力结构文件解析失败");
                return false;
            }
            var jsonText = File.ReadAllText(jsonFileInfo.FullName);
            var revitModel = JsonHelper.Json2Object<HStation.Model.RevitModel>(jsonText);
            var hydroId = HStation.Hydro.ParseHelper.FromRevit(revitModel);
            if (hydroId < 1)
            {
                feedBackMsg?.Invoke("水力结构文件解析失败");
                return false;
            }
            #endregion
            #region åˆ›å»ºé¡¹ç›®
            var bllXhsProject = new BLL.XhsProjectExtensions();
            var project = new AddXhsProjectExtensionsInput();
            project.NO = vm.NO;
            project.Name = vm.Name;
            project.Address = vm.Address;
            project.Customer = vm.Customer;
            project.Flags = vm.Flags;
            project.TagName = vm.TagName;
            project.Description = vm.Description;
            project.SiteList = new List<AddXhsProjectSiteExtensionsInput>() {
                new AddXhsProjectSiteExtensionsInput(){
                    Name=vm.Name,
                    Description=vm.Description
                }
            };
            var projectId = await bllXhsProject.Insert(project);
            if (projectId < 1)
            {
                feedBackMsg?.Invoke("项目创建失败");
                return false;
            }
            #endregion
            #region å…³è”模型
            #endregion
            #region åœ°å›¾ä½ç½®
            if (vm.Location != null)
            {
                var mapInfo = new Yw.Dto.AddMapInfoInput();
                mapInfo.ObjectType = HStation.Xhs.DataType.XhsProject;
                mapInfo.ObjectID = projectId;
                mapInfo.ObjectName = project.Name;
                mapInfo.Purpose = Yw.Map.Purpose.Location;
                mapInfo.Kind = Yw.Map.Kind.Gaodei;
                mapInfo.Shape = Yw.Map.Shape.Marker;
                mapInfo.Position = vm.Location.ToJson();
                var mapInfoId = await new Yw.BLL.MapInfo().Insert(mapInfo);
                if (mapInfoId < 1)
                {
                    feedBackMsg?.Invoke("地图定位信息保存失败");
                }
                else
                {
                    feedBackMsg?.Invoke("保存地图定位信息成功");
                }
            }
            #endregion
            #region ä¸Šä¼ æ¨¡åž‹
            var rvtFileInfo = allFileInfoList.Where(x => x.Extension == ".rvt").FirstOrDefault();
            if (rvtFileInfo == null)
            {
                feedBackMsg?.Invoke("Revit模型文件解析失败");
                return false;
            }
            var bimfaceId = await Yw.WinFrmUI.BimfaceHelper.UploadFile(rvtFileInfo.FullName);
            if (bimfaceId < 1)
            {
                feedBackMsg?.Invoke("Revit模型文件上传失败");
                return false;
            }
            #endregion
            #region ä¿å­˜Bimface
            var bllBimfaceFile = new Yw.BLL.BimfaceFile();
            var bimfaceFile = new Yw.Dto.AddBimfaceFileInput();
            bimfaceFile.BimfaceId = bimfaceId.ToString();
            bimfaceFile.Name = vm.Name;
            bimfaceFile.ModelType = (int)Yw.Bimface.eModelType.File;
            bimfaceFile.FileStatus = (int)Yw.Bimface.eFileStatus.UploadSucceed;
            bimfaceFile.FormatType = (int)Yw.Bimface.eFormatType._3D;
            bimfaceFile.FileSuffix = rvtFileInfo.Extension;
            bimfaceFile.FileSize = string.Format("{0}MB", System.Math.Ceiling(rvtFileInfo.Length / 1024.0 / 1024.0));
            var bimfaceFileId = await bllBimfaceFile.Insert(bimfaceFile);
            if (bimfaceFileId < 1)
            {
                feedBackMsg?.Invoke("BIMFACE文件信息保存失败");
            }
            else
            {
                feedBackMsg?.Invoke("BIMFACE文件信息保存成功");
            }
            #endregion
            #region å…³è”Bimface
            var bllBimfaceRelation = new Yw.BLL.BimfaceFileRelation();
            var bimfaceRelation = new Yw.Dto.AddBimfaceFileRelationInput();
            bimfaceRelation.ObjectType = HStation.Xhs.DataType.XhsProject;
            bimfaceRelation.ObjectID = projectId;
            bimfaceRelation.BimfaceFileID = bimfaceFileId;
            bimfaceRelation.Purpose = HStation.Xhs.Purpose.Simulation;
            bimfaceRelation.Description = vm.Description;
            var bimfaceRelationId = await bllBimfaceRelation.Insert(bimfaceRelation);
            if (bimfaceRelationId < 1)
            {
                feedBackMsg?.Invoke("BIMFACE关联失败");
            }
            else
            {
                feedBackMsg?.Invoke("BIMFACE关联成功");
            }
            #endregion
            #region å‘èµ·bimface转换
            var bimfaceTranslateStatus = await Yw.WinFrmUI.BimfaceHelper.TranslateRvtFile(bimfaceId);
            if (bimfaceTranslateStatus != Yw.BIMFace.eTranslateStatus.Success)
            {
                await Yw.WinFrmUI.BimfaceHelper.WaitFileTranslateStatusUntilSuccess(bimfaceId, 3000);
            }
            #endregion
            #region æ›´æ–°çŠ¶æ€
            bol = await bllBimfaceFile.UpdateFileStatus(bimfaceFileId, (int)Yw.Bimface.eFileStatus.ConvertSucceed);
            feedBackMsg?.Invoke("文件状态更新");
            #endregion
            return true;
        }
    }
}
WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/01-import/ImportXhsProjectViewModel.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,56 @@
namespace HStation.WinFrmUI
{
    /// <summary>
    ///
    /// </summary>
    public class ImportXhsProjectViewModel
    {
        /// <summary>
        /// åŽ‹ç¼©æ–‡ä»¶
        /// </summary>
        public string ZipFile { get; set; }
        /// <summary>
        /// ç¼–号
        /// </summary>
        public string NO { get; set; }
        /// <summary>
        /// åç§°
        /// </summary>
        public string Name { get; set; }
        /// <summary>
        /// è¯¦ç»†åœ°å€
        /// </summary>
        public string Address { get; set; }
        /// <summary>
        /// å®¢æˆ·
        /// </summary>
        public string Customer { get; set; }
        /// <summary>
        /// æ ‡ç­¾
        /// </summary>
        public List<string> Flags { get; set; }
        /// <summary>
        /// æ ‡å¿—
        /// </summary>
        public string TagName { get; set; }
        /// <summary>
        /// è¯´æ˜Ž
        /// </summary>
        public string Description { get; set; }
        /// <summary>
        /// ä½ç½®
        /// </summary>
        public Yw.Model.Map.Marker Location { get; set; }
    }
}
WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/01-import/InputXhsProjectBasicInfoCtrl.Designer.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,269 @@
namespace HStation.WinFrmUI
{
    partial class InputXhsProjectBasicInfoCtrl
    {
        /// <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();
            layoutControl1 = new DevExpress.XtraLayout.LayoutControl();
            Root = new DevExpress.XtraLayout.LayoutControlGroup();
            txtNO = new DevExpress.XtraEditors.TextEdit();
            layoutControlItem1 = new DevExpress.XtraLayout.LayoutControlItem();
            txtName = new DevExpress.XtraEditors.TextEdit();
            layoutControlItem2 = new DevExpress.XtraLayout.LayoutControlItem();
            dxErrorProvider1 = new DevExpress.XtraEditors.DXErrorProvider.DXErrorProvider(components);
            txtCustomer = new DevExpress.XtraEditors.TextEdit();
            layoutControlItem3 = new DevExpress.XtraLayout.LayoutControlItem();
            txtAddress = new DevExpress.XtraEditors.TextEdit();
            layoutControlItem4 = new DevExpress.XtraLayout.LayoutControlItem();
            txtFlags = new DevExpress.XtraEditors.TextEdit();
            layoutControlItem5 = new DevExpress.XtraLayout.LayoutControlItem();
            textEdit1 = new DevExpress.XtraEditors.TextEdit();
            layoutControlItem6 = new DevExpress.XtraLayout.LayoutControlItem();
            memoEdit1 = new DevExpress.XtraEditors.MemoEdit();
            layoutControlItem7 = new DevExpress.XtraLayout.LayoutControlItem();
            ((ISupportInitialize)layoutControl1).BeginInit();
            layoutControl1.SuspendLayout();
            ((ISupportInitialize)Root).BeginInit();
            ((ISupportInitialize)txtNO.Properties).BeginInit();
            ((ISupportInitialize)layoutControlItem1).BeginInit();
            ((ISupportInitialize)txtName.Properties).BeginInit();
            ((ISupportInitialize)layoutControlItem2).BeginInit();
            ((ISupportInitialize)dxErrorProvider1).BeginInit();
            ((ISupportInitialize)txtCustomer.Properties).BeginInit();
            ((ISupportInitialize)layoutControlItem3).BeginInit();
            ((ISupportInitialize)txtAddress.Properties).BeginInit();
            ((ISupportInitialize)layoutControlItem4).BeginInit();
            ((ISupportInitialize)txtFlags.Properties).BeginInit();
            ((ISupportInitialize)layoutControlItem5).BeginInit();
            ((ISupportInitialize)textEdit1.Properties).BeginInit();
            ((ISupportInitialize)layoutControlItem6).BeginInit();
            ((ISupportInitialize)memoEdit1.Properties).BeginInit();
            ((ISupportInitialize)layoutControlItem7).BeginInit();
            SuspendLayout();
            //
            // layoutControl1
            //
            layoutControl1.Controls.Add(memoEdit1);
            layoutControl1.Controls.Add(textEdit1);
            layoutControl1.Controls.Add(txtFlags);
            layoutControl1.Controls.Add(txtAddress);
            layoutControl1.Controls.Add(txtCustomer);
            layoutControl1.Controls.Add(txtName);
            layoutControl1.Controls.Add(txtNO);
            layoutControl1.Dock = DockStyle.Fill;
            layoutControl1.Location = new Point(0, 0);
            layoutControl1.Name = "layoutControl1";
            layoutControl1.Root = Root;
            layoutControl1.Size = new Size(859, 464);
            layoutControl1.TabIndex = 0;
            layoutControl1.Text = "layoutControl1";
            //
            // Root
            //
            Root.AppearanceItemCaption.Options.UseTextOptions = true;
            Root.AppearanceItemCaption.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Far;
            Root.EnableIndentsWithoutBorders = DevExpress.Utils.DefaultBoolean.True;
            Root.GroupBordersVisible = false;
            Root.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] { layoutControlItem1, layoutControlItem2, layoutControlItem3, layoutControlItem4, layoutControlItem5, layoutControlItem6, layoutControlItem7 });
            Root.Name = "Root";
            Root.Size = new Size(859, 464);
            Root.TextVisible = false;
            //
            // txtNO
            //
            txtNO.Location = new Point(84, 12);
            txtNO.Name = "txtNO";
            txtNO.Size = new Size(343, 20);
            txtNO.StyleController = layoutControl1;
            txtNO.TabIndex = 4;
            //
            // layoutControlItem1
            //
            layoutControlItem1.Control = txtNO;
            layoutControlItem1.Location = new Point(0, 0);
            layoutControlItem1.Name = "layoutControlItem1";
            layoutControlItem1.Size = new Size(419, 24);
            layoutControlItem1.Text = "编号:";
            layoutControlItem1.TextSize = new Size(60, 14);
            //
            // txtName
            //
            txtName.Location = new Point(503, 12);
            txtName.Name = "txtName";
            txtName.Size = new Size(344, 20);
            txtName.StyleController = layoutControl1;
            txtName.TabIndex = 5;
            //
            // layoutControlItem2
            //
            layoutControlItem2.AllowHtmlStringInCaption = true;
            layoutControlItem2.Control = txtName;
            layoutControlItem2.Location = new Point(419, 0);
            layoutControlItem2.Name = "layoutControlItem2";
            layoutControlItem2.Size = new Size(420, 24);
            layoutControlItem2.Text = "<color=red>*</color>名称:";
            layoutControlItem2.TextSize = new Size(60, 14);
            //
            // dxErrorProvider1
            //
            dxErrorProvider1.ContainerControl = this;
            //
            // txtCustomer
            //
            txtCustomer.Location = new Point(84, 36);
            txtCustomer.Name = "txtCustomer";
            txtCustomer.Size = new Size(343, 20);
            txtCustomer.StyleController = layoutControl1;
            txtCustomer.TabIndex = 6;
            //
            // layoutControlItem3
            //
            layoutControlItem3.Control = txtCustomer;
            layoutControlItem3.Location = new Point(0, 24);
            layoutControlItem3.Name = "layoutControlItem3";
            layoutControlItem3.Size = new Size(419, 24);
            layoutControlItem3.Text = "客户:";
            layoutControlItem3.TextSize = new Size(60, 14);
            //
            // txtAddress
            //
            txtAddress.Location = new Point(503, 36);
            txtAddress.Name = "txtAddress";
            txtAddress.Size = new Size(344, 20);
            txtAddress.StyleController = layoutControl1;
            txtAddress.TabIndex = 7;
            //
            // layoutControlItem4
            //
            layoutControlItem4.Control = txtAddress;
            layoutControlItem4.Location = new Point(419, 24);
            layoutControlItem4.Name = "layoutControlItem4";
            layoutControlItem4.Size = new Size(420, 24);
            layoutControlItem4.Text = "详细地址:";
            layoutControlItem4.TextSize = new Size(60, 14);
            //
            // txtFlags
            //
            txtFlags.Location = new Point(84, 60);
            txtFlags.Name = "txtFlags";
            txtFlags.Size = new Size(343, 20);
            txtFlags.StyleController = layoutControl1;
            txtFlags.TabIndex = 8;
            //
            // layoutControlItem5
            //
            layoutControlItem5.Control = txtFlags;
            layoutControlItem5.Location = new Point(0, 48);
            layoutControlItem5.Name = "layoutControlItem5";
            layoutControlItem5.Size = new Size(419, 24);
            layoutControlItem5.Text = "标签:";
            layoutControlItem5.TextSize = new Size(60, 14);
            //
            // textEdit1
            //
            textEdit1.Location = new Point(503, 60);
            textEdit1.Name = "textEdit1";
            textEdit1.Size = new Size(344, 20);
            textEdit1.StyleController = layoutControl1;
            textEdit1.TabIndex = 9;
            //
            // layoutControlItem6
            //
            layoutControlItem6.Control = textEdit1;
            layoutControlItem6.Location = new Point(419, 48);
            layoutControlItem6.Name = "layoutControlItem6";
            layoutControlItem6.Size = new Size(420, 24);
            layoutControlItem6.Text = "标志:";
            layoutControlItem6.TextSize = new Size(60, 14);
            //
            // memoEdit1
            //
            memoEdit1.Location = new Point(84, 84);
            memoEdit1.Name = "memoEdit1";
            memoEdit1.Size = new Size(763, 368);
            memoEdit1.StyleController = layoutControl1;
            memoEdit1.TabIndex = 10;
            //
            // layoutControlItem7
            //
            layoutControlItem7.Control = memoEdit1;
            layoutControlItem7.Location = new Point(0, 72);
            layoutControlItem7.Name = "layoutControlItem7";
            layoutControlItem7.Size = new Size(839, 372);
            layoutControlItem7.Text = "说明";
            layoutControlItem7.TextSize = new Size(60, 14);
            //
            // InputXhsProjectBasicInfoCtrl
            //
            AutoScaleDimensions = new SizeF(7F, 14F);
            AutoScaleMode = AutoScaleMode.Font;
            Controls.Add(layoutControl1);
            Name = "InputXhsProjectBasicInfoCtrl";
            Size = new Size(859, 464);
            ((ISupportInitialize)layoutControl1).EndInit();
            layoutControl1.ResumeLayout(false);
            ((ISupportInitialize)Root).EndInit();
            ((ISupportInitialize)txtNO.Properties).EndInit();
            ((ISupportInitialize)layoutControlItem1).EndInit();
            ((ISupportInitialize)txtName.Properties).EndInit();
            ((ISupportInitialize)layoutControlItem2).EndInit();
            ((ISupportInitialize)dxErrorProvider1).EndInit();
            ((ISupportInitialize)txtCustomer.Properties).EndInit();
            ((ISupportInitialize)layoutControlItem3).EndInit();
            ((ISupportInitialize)txtAddress.Properties).EndInit();
            ((ISupportInitialize)layoutControlItem4).EndInit();
            ((ISupportInitialize)txtFlags.Properties).EndInit();
            ((ISupportInitialize)layoutControlItem5).EndInit();
            ((ISupportInitialize)textEdit1.Properties).EndInit();
            ((ISupportInitialize)layoutControlItem6).EndInit();
            ((ISupportInitialize)memoEdit1.Properties).EndInit();
            ((ISupportInitialize)layoutControlItem7).EndInit();
            ResumeLayout(false);
        }
        #endregion
        private DevExpress.XtraLayout.LayoutControl layoutControl1;
        private DevExpress.XtraLayout.LayoutControlGroup Root;
        private DevExpress.XtraEditors.TextEdit txtName;
        private DevExpress.XtraEditors.TextEdit txtNO;
        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem1;
        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem2;
        private DevExpress.XtraEditors.DXErrorProvider.DXErrorProvider dxErrorProvider1;
        private DevExpress.XtraEditors.TextEdit txtCustomer;
        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem3;
        private DevExpress.XtraEditors.TextEdit textEdit1;
        private DevExpress.XtraEditors.TextEdit txtFlags;
        private DevExpress.XtraEditors.TextEdit txtAddress;
        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem4;
        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem5;
        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem6;
        private DevExpress.XtraEditors.MemoEdit memoEdit1;
        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem7;
    }
}
WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/01-import/InputXhsProjectBasicInfoCtrl.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
using DevExpress.XtraEditors;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace HStation.WinFrmUI
{
    public partial class InputXhsProjectBasicInfoCtrl : DevExpress.XtraEditors.XtraUserControl
    {
        public InputXhsProjectBasicInfoCtrl()
        {
            InitializeComponent();
        }
    }
}
WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/01-import/InputXhsProjectBasicInfoCtrl.resx
copy from WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-_UserControls/XhsProjectUserControl.resx copy to WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/01-import/InputXhsProjectBasicInfoCtrl.resx
WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/01-import/SelectXhsProjectModelFileCtrl.Designer.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,125 @@
namespace HStation.WinFrmUI
{
    partial class SelectXhsProjectModelFileCtrl
    {
        /// <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()
        {
            DevExpress.XtraLayout.ColumnDefinition columnDefinition1 = new DevExpress.XtraLayout.ColumnDefinition();
            DevExpress.XtraLayout.RowDefinition rowDefinition1 = new DevExpress.XtraLayout.RowDefinition();
            DevExpress.XtraLayout.RowDefinition rowDefinition2 = new DevExpress.XtraLayout.RowDefinition();
            DevExpress.XtraLayout.RowDefinition rowDefinition3 = new DevExpress.XtraLayout.RowDefinition();
            layoutControl1 = new DevExpress.XtraLayout.LayoutControl();
            Root = new DevExpress.XtraLayout.LayoutControlGroup();
            btnEditSelectModelFile = new DevExpress.XtraEditors.ButtonEdit();
            layoutControlItem1 = new DevExpress.XtraLayout.LayoutControlItem();
            ((ISupportInitialize)layoutControl1).BeginInit();
            layoutControl1.SuspendLayout();
            ((ISupportInitialize)Root).BeginInit();
            ((ISupportInitialize)btnEditSelectModelFile.Properties).BeginInit();
            ((ISupportInitialize)layoutControlItem1).BeginInit();
            SuspendLayout();
            //
            // layoutControl1
            //
            layoutControl1.Controls.Add(btnEditSelectModelFile);
            layoutControl1.Dock = DockStyle.Fill;
            layoutControl1.Location = new Point(0, 0);
            layoutControl1.Name = "layoutControl1";
            layoutControl1.OptionsCustomizationForm.DesignTimeCustomizationFormPositionAndSize = new Rectangle(1208, 302, 650, 400);
            layoutControl1.Root = Root;
            layoutControl1.Size = new Size(941, 591);
            layoutControl1.TabIndex = 0;
            layoutControl1.Text = "layoutControl1";
            //
            // Root
            //
            Root.EnableIndentsWithoutBorders = DevExpress.Utils.DefaultBoolean.True;
            Root.GroupBordersVisible = false;
            Root.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] { layoutControlItem1 });
            Root.LayoutMode = DevExpress.XtraLayout.Utils.LayoutMode.Table;
            Root.Name = "Root";
            columnDefinition1.SizeType = SizeType.Percent;
            columnDefinition1.Width = 100D;
            Root.OptionsTableLayoutGroup.ColumnDefinitions.AddRange(new DevExpress.XtraLayout.ColumnDefinition[] { columnDefinition1 });
            rowDefinition1.Height = 40D;
            rowDefinition1.SizeType = SizeType.Percent;
            rowDefinition2.Height = 65D;
            rowDefinition2.SizeType = SizeType.Absolute;
            rowDefinition3.Height = 60D;
            rowDefinition3.SizeType = SizeType.Percent;
            Root.OptionsTableLayoutGroup.RowDefinitions.AddRange(new DevExpress.XtraLayout.RowDefinition[] { rowDefinition1, rowDefinition2, rowDefinition3 });
            Root.Size = new Size(941, 591);
            Root.TextVisible = false;
            //
            // btnEditSelectModelFile
            //
            btnEditSelectModelFile.Location = new Point(30, 241);
            btnEditSelectModelFile.Name = "btnEditSelectModelFile";
            btnEditSelectModelFile.Properties.AutoHeight = false;
            btnEditSelectModelFile.Properties.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] { new DevExpress.XtraEditors.Controls.EditorButton() });
            btnEditSelectModelFile.Size = new Size(881, 34);
            btnEditSelectModelFile.StyleController = layoutControl1;
            btnEditSelectModelFile.TabIndex = 4;
            btnEditSelectModelFile.ButtonClick += btnEditSelectModelFile_ButtonClick;
            //
            // layoutControlItem1
            //
            layoutControlItem1.AppearanceItemCaption.FontSizeDelta = 6;
            layoutControlItem1.AppearanceItemCaption.Options.UseFont = true;
            layoutControlItem1.Control = btnEditSelectModelFile;
            layoutControlItem1.Location = new Point(0, 202);
            layoutControlItem1.Name = "layoutControlItem1";
            layoutControlItem1.OptionsTableLayoutItem.RowIndex = 1;
            layoutControlItem1.Padding = new DevExpress.XtraLayout.Utils.Padding(20, 20, 2, 2);
            layoutControlItem1.Size = new Size(921, 65);
            layoutControlItem1.Text = "选择模型文件";
            layoutControlItem1.TextLocation = DevExpress.Utils.Locations.Top;
            layoutControlItem1.TextSize = new Size(120, 24);
            //
            // SelectXhsProjectModelFileCtrl
            //
            AutoScaleDimensions = new SizeF(7F, 14F);
            AutoScaleMode = AutoScaleMode.Font;
            Controls.Add(layoutControl1);
            Name = "SelectXhsProjectModelFileCtrl";
            Size = new Size(941, 591);
            ((ISupportInitialize)layoutControl1).EndInit();
            layoutControl1.ResumeLayout(false);
            ((ISupportInitialize)Root).EndInit();
            ((ISupportInitialize)btnEditSelectModelFile.Properties).EndInit();
            ((ISupportInitialize)layoutControlItem1).EndInit();
            ResumeLayout(false);
        }
        #endregion
        private DevExpress.XtraLayout.LayoutControl layoutControl1;
        private DevExpress.XtraEditors.ButtonEdit btnEditSelectModelFile;
        private DevExpress.XtraLayout.LayoutControlGroup Root;
        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem1;
    }
}
WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/01-import/SelectXhsProjectModelFileCtrl.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,29 @@
namespace HStation.WinFrmUI
{
    public partial class SelectXhsProjectModelFileCtrl : DevExpress.XtraEditors.XtraUserControl
    {
        public SelectXhsProjectModelFileCtrl()
        {
            InitializeComponent();
            this.layoutControl1.SetupLayoutControl();
        }
        //压缩文件
        private string _zipFile = null;
        //选择模型文件
        private void btnEditSelectModelFile_ButtonClick(object sender, DevExpress.XtraEditors.Controls.ButtonPressedEventArgs e)
        {
            var suffix = Settings.XhsParasHelper.Xhs.File.Suffix;
            var dlg = new OpenFileDialog();
            dlg.Filter = $"模型文件(*{suffix}|*{suffix})";
            dlg.FilterIndex = 1;
            if (dlg.ShowDialog() == DialogResult.OK)
            {
                var fileName = dlg.FileName;
                _zipFile = fileName;
                this.btnEditSelectModelFile.EditValue = _zipFile;
            }
        }
    }
}
WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/01-import/SelectXhsProjectModelFileCtrl.resx
copy from WinFrmUI/HStation.WinFrmUI.Xhs.Core/04-HomePageMainPanel/HomePageMainPanel.resx copy to WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/01-import/SelectXhsProjectModelFileCtrl.resx
WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/01-import/SetXhsProjectMapLocationCtrl.Designer.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,57 @@
namespace HStation.WinFrmUI
{
    partial class SetXhsProjectMapLocationCtrl
    {
        /// <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()
        {
            mapSetSimpleMarkerContainer1 = new MapSetSimpleMarkerContainer();
            SuspendLayout();
            //
            // mapSetSimpleMarkerContainer1
            //
            mapSetSimpleMarkerContainer1.Dock = DockStyle.Fill;
            mapSetSimpleMarkerContainer1.Location = new Point(0, 0);
            mapSetSimpleMarkerContainer1.Margin = new Padding(3, 2, 3, 2);
            mapSetSimpleMarkerContainer1.Name = "mapSetSimpleMarkerContainer1";
            mapSetSimpleMarkerContainer1.Size = new Size(765, 459);
            mapSetSimpleMarkerContainer1.TabIndex = 0;
            //
            // SetXhsProjectMapLocationCtrl
            //
            AutoScaleDimensions = new SizeF(7F, 14F);
            AutoScaleMode = AutoScaleMode.Font;
            Controls.Add(mapSetSimpleMarkerContainer1);
            Name = "SetXhsProjectMapLocationCtrl";
            Size = new Size(765, 459);
            ResumeLayout(false);
        }
        #endregion
        private MapSetSimpleMarkerContainer mapSetSimpleMarkerContainer1;
    }
}
WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/01-import/SetXhsProjectMapLocationCtrl.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
namespace HStation.WinFrmUI
{
    public partial class SetXhsProjectMapLocationCtrl : DevExpress.XtraEditors.XtraUserControl
    {
        public SetXhsProjectMapLocationCtrl()
        {
            InitializeComponent();
        }
        public async void SetBindingData()
        {
            await this.mapSetSimpleMarkerContainer1.InitialContainer();
        }
    }
}
WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/01-import/SetXhsProjectMapLocationCtrl.resx
copy from WinFrmUI/HStation.WinFrmUI.Xhs.Core/04-HomePageMainPanel/HomePageMainPanel.resx copy to WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/01-import/SetXhsProjectMapLocationCtrl.resx
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-ViewModel/XhsProject/AmapLocationViewModel.cs
ÎļþÒÑɾ³ý
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-ViewModel/XhsProject/FixationReceivedViewModel.cs
ÎļþÒÑɾ³ý
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-ViewModel/XhsProject/XhsProjectPropertyGridViewModel.cs
ÎļþÒÑɾ³ý
WinFrmUI/HStation.WinFrmUI.Xhs.Core/04-HomePageMainPanel/HomePageMainPanel.Designer.cs
ÎļþÒÑɾ³ý
WinFrmUI/HStation.WinFrmUI.Xhs.Core/04-HomePageMainPanel/HomePageMainPanel.cs
ÎļþÒÑɾ³ý
WinFrmUI/HStation.WinFrmUI.Xhs.Core/04-HomePageMainPanel/XhsProjectTreeList.Designer.cs
ÎļþÒÑɾ³ý
WinFrmUI/HStation.WinFrmUI.Xhs.Core/04-HomePageMainPanel/XhsProjectTreeList.cs
ÎļþÒÑɾ³ý
WinFrmUI/HStation.WinFrmUI.Xhs.Core/05-Project/01-ExtractHelper/ExtractHelper.cs
ÎļþÒÑɾ³ý
WinFrmUI/HStation.WinFrmUI.Xhs.Core/05-Project/02-_UserControls/XhsProjectUserControl.Designer.cs
WinFrmUI/HStation.WinFrmUI.Xhs.Core/05-Project/02-_UserControls/XhsProjectUserControl.cs
WinFrmUI/HStation.WinFrmUI.Xhs.Core/05-Project/02-_UserControls/XhsProjectUserControl.resx
WinFrmUI/HStation.WinFrmUI.Xhs.Core/GlobalUsings.cs
@@ -1,3 +1,8 @@
global using Yw;
global using Yw.WebBrower;
global using Yw.WinFrmUI;
global using Yw.WinFrmUI;
global using HStation.Dto;
global using HStation.Xhs;
global using System.ComponentModel;
global using Yw.Untity;
global using System.IO;
WinFrmUI/HStation.WinFrmUI.Xhs.Core/HStation.WinFrmUI.Xhs.Core.csproj
@@ -8,14 +8,14 @@
  </PropertyGroup>
  <ItemGroup>
    <Compile Remove="05-Project\00-PumpProject\00-ViewModel\AmapLocationViewModel.cs" />
    <Compile Remove="05-Project\00-PumpProject\00-ViewModel\FixationReceivedViewModel.cs" />
    <Compile Remove="05-Project\00-PumpProject\AddXhsProjectDlg.cs" />
    <Compile Remove="05-Project\00-PumpProject\AddXhsProjectDlg.designer.cs" />
  </ItemGroup>
  <ItemGroup>
    <EmbeddedResource Remove="05-Project\00-PumpProject\AddXhsProjectDlg.resx" />
    <Compile Remove="03-ViewModel\**" />
    <Compile Remove="04-HomePageMainPanel\**" />
    <EmbeddedResource Remove="03-ViewModel\**" />
    <EmbeddedResource Remove="04-HomePageMainPanel\**" />
    <None Remove="03-ViewModel\**" />
    <None Remove="04-HomePageMainPanel\**" />
    <Page Remove="03-ViewModel\**" />
    <Page Remove="04-HomePageMainPanel\**" />
  </ItemGroup>
  <ItemGroup>
@@ -38,50 +38,27 @@
  <ItemGroup>
    <PackageReference Include="DevExpress.Win.Design" Version="23.2.4" />
    <PackageReference Include="Yw.ZipFile.Core" Version="3.0.0" />
  </ItemGroup>
  <ItemGroup>
    <Folder Include="map\gaode\css\" />
    <Folder Include="00-core\" />
  </ItemGroup>
  <ItemGroup>
    <ProjectReference Include="..\..\BLL\HStation.BLL.Xhs.Core\HStation.BLL.Xhs.Core.csproj" />
    <ProjectReference Include="..\..\Hydro\HStation.Hydro.Core\HStation.Hydro.Core.csproj" />
    <ProjectReference Include="..\HStation.WinFrmUI.Bimface.Core\HStation.WinFrmUI.Bimface.Core.csproj" />
    <ProjectReference Include="..\Hstation.WinFrmUI.Core\HStation.WinFrmUI.Core.csproj" />
    <ProjectReference Include="..\Yw.WinFrmUI.Map.Core\Yw.WinFrmUI.Map.Core.csproj" />
  </ItemGroup>
  <ItemGroup>
    <Compile Update="04-HomePageMainPanel\AddXhsProjectDlg.cs">
      <SubType>Form</SubType>
    </Compile>
    <Compile Update="04-HomePageMainPanel\HomePageMainPanel.cs">
      <SubType>UserControl</SubType>
    </Compile>
    <Compile Update="05-Project\00-PumpProject\EditXhsProjectDlg.cs">
      <SubType>Form</SubType>
    </Compile>
    <Compile Update="05-Project\00-PumpProject\SetModelEditDlg.cs">
      <SubType>Form</SubType>
    </Compile>
    <Compile Update="05-Project\00-PumpProject\SetUseStatusDlg.cs">
      <SubType>Form</SubType>
    </Compile>
    <Compile Update="05-Project\00-PumpProject\XhsModelEdit.cs">
      <SubType>Form</SubType>
    </Compile>
    <Compile Update="05-Project\00-PumpProject\XhsProjectMainPanel.cs">
      <SubType>UserControl</SubType>
    </Compile>
    <Compile Update="Properties\Resources.Designer.cs">
      <DesignTime>True</DesignTime>
      <AutoGen>True</AutoGen>
      <DependentUpon>Resources.resx</DependentUpon>
    </Compile>
    <Compile Update="04-HomePageMainPanel\XhsProjectTreeList.cs">
      <SubType>UserControl</SubType>
    </Compile>
    <Compile Update="02-_UserControls\XhsProjectUserControl.cs">
      <SubType>UserControl</SubType>
    </Compile>
  </ItemGroup>
WinFrmUI/HStation.WinFrmUI.Xhs.Core/HStation.WinFrmUI.Xhs.Core.csproj.user
@@ -1,7 +1,58 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <ItemGroup>
    <Compile Update="01-kpi\01-map\MapViewProjectListContainer.cs">
    <Compile Update="01-home\02-map\MapViewProjectListContainer.cs">
      <SubType>UserControl</SubType>
    </Compile>
    <Compile Update="01-home\01-project\HomeXhsProjectTreeListCtrl.cs">
      <SubType>UserControl</SubType>
    </Compile>
    <Compile Update="01-home\03-property\HomeXhsProjectPropertyCtrl.cs">
      <SubType>UserControl</SubType>
    </Compile>
    <Compile Update="01-home\HomeXhsProjectPage.cs">
      <SubType>UserControl</SubType>
    </Compile>
    <Compile Update="02-project\01-import\GenerateXhsProjectCtrl.cs">
      <SubType>UserControl</SubType>
    </Compile>
    <Compile Update="02-project\01-import\ImportXhsProjectCompletedCtrl.cs">
      <SubType>UserControl</SubType>
    </Compile>
    <Compile Update="02-project\01-import\ImportXhsProjectDlg.cs">
      <SubType>Form</SubType>
    </Compile>
    <Compile Update="02-project\01-import\InputXhsProjectBasicInfoCtrl.cs">
      <SubType>UserControl</SubType>
    </Compile>
    <Compile Update="02-project\01-import\SelectXhsProjectModelFileCtrl.cs">
      <SubType>UserControl</SubType>
    </Compile>
    <Compile Update="02-project\01-import\SetXhsProjectMapLocationCtrl.cs">
      <SubType>UserControl</SubType>
    </Compile>
    <Compile Update="04-HomePageMainPanel\AddXhsProjectDlg.cs">
      <SubType>Form</SubType>
    </Compile>
    <Compile Update="05-Project\00-PumpProject\AddXhsProjectDlg.cs">
      <SubType>Form</SubType>
    </Compile>
    <Compile Update="05-Project\00-PumpProject\EditXhsProjectDlg.cs">
      <SubType>Form</SubType>
    </Compile>
    <Compile Update="05-Project\00-PumpProject\SetModelEditDlg.cs">
      <SubType>Form</SubType>
    </Compile>
    <Compile Update="05-Project\00-PumpProject\SetUseStatusDlg.cs">
      <SubType>Form</SubType>
    </Compile>
    <Compile Update="05-Project\00-PumpProject\XhsModelEdit.cs">
      <SubType>Form</SubType>
    </Compile>
    <Compile Update="05-Project\00-PumpProject\XhsProjectMainPanel.cs">
      <SubType>UserControl</SubType>
    </Compile>
    <Compile Update="05-Project\02-_UserControls\XhsProjectUserControl.cs">
      <SubType>UserControl</SubType>
    </Compile>
  </ItemGroup>
WinFrmUI/Yw.WinFrmUI.Core/07-sorter/DisplayUnitAttribute.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,26 @@
namespace Yw.WinFrmUI
{
    /// <summary>
    /// ç”¨äºŽæ˜¾ç¤ºçš„单位(propertyGrid中使用)
    /// </summary>
    [AttributeUsage(AttributeTargets.Property, AllowMultiple = false, Inherited = true)]
    public class DisplayUnitAttribute : Attribute
    {
        /// <summary>
        ///
        /// </summary>
        public string Unit { get; set; }
        /// <summary>
        ///
        /// </summary>
        /// <param name="unit"></param>
        public DisplayUnitAttribute(string unit)
        {
            this.Unit = unit;
        }
    }
}
WinFrmUI/Yw.WinFrmUI.Core/07-sorter/MultiTextAttribute.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
namespace Yw.WinFrmUI
{
    /// <summary>
    /// å¤šè¡Œæ–‡æœ¬ç‰¹æ€§
    /// </summary>
    [AttributeUsage(AttributeTargets.Property, AllowMultiple = false, Inherited = true)]
    public class MultiTextAttribute : Attribute
    {
        /// <summary>
        ///
        /// </summary>
        public MultiTextAttribute() { }
    }
}
WinFrmUI/Yw.WinFrmUI.Core/07-sorter/PropertySorter.cs
ÎļþÃû´Ó WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-ViewModel/PropertySorter.cs ÐÞ¸Ä
@@ -1,18 +1,31 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Linq;
using System.Text;
namespace HStation.WinFrmUI.Core
namespace Yw.WinFrmUI
{
    /// <summary>
    /// å±žæ€§æŽ’序
    /// </summary>
    public class PropertySorter : ExpandableObjectConverter
    {
        #region Methods
        /// <summary>
        ///
        /// </summary>
        public override bool GetPropertiesSupported(ITypeDescriptorContext context)
        {
            return true;
        }
        /// <summary>
        ///
        /// </summary>
        public override PropertyDescriptorCollection GetProperties(ITypeDescriptorContext context, object value, Attribute[] attributes)
        {
            //
@@ -44,6 +57,8 @@
            // implementation of IComparable to sort
            //
            orderedProperties.Sort();
            //
            // Build a string list of the ordered names
            //
@@ -57,12 +72,13 @@
            //
            return pdc.Sort((string[])propertyNames.ToArray(typeof(string)));
        }
        #endregion Methods
        #endregion
    }
    #region Helper Class - PropertyOrderAttribute
    /// <summary>
    ///
    /// </summary>
    [AttributeUsage(AttributeTargets.Property)]
    public class PropertyOrderAttribute : Attribute
    {
@@ -70,12 +86,14 @@
        // Simple attribute to allow the order of a property to be specified
        //
        private int _order;
        public PropertyOrderAttribute(int order)
        {
            _order = order;
        }
        /// <summary>
        ///
        /// </summary>
        public int Order
        {
            get
@@ -84,16 +102,21 @@
            }
        }
    }
    #endregion Helper Class - PropertyOrderAttribute
    #endregion
    #region Helper Class - PropertyOrderPair
    /// <summary>
    ///
    /// </summary>
    public class PropertyOrderPair : IComparable
    {
        private int _order;
        private string _name;
        /// <summary>
        ///
        /// </summary>
        public string Name
        {
            get
@@ -101,13 +124,20 @@
                return _name;
            }
        }
        private string _name;
        /// <summary>
        ///
        /// </summary>
        public PropertyOrderPair(string name, int order)
        {
            _order = order;
            _name = name;
        }
        /// <summary>
        ///
        /// </summary>
        public int CompareTo(object obj)
        {
            //
@@ -130,6 +160,8 @@
            return 1;
        }
    }
    #endregion
    #endregion Helper Class - PropertyOrderPair
}
}
WinFrmUI/Yw.WinFrmUI.Core/07-sorter/ShowEditorAttribute.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
namespace Yw.WinFrmUI
{
    /// <summary>
    /// ç¡®å®šæ˜¯å¦ä¸ºå…è®¸æ˜¾ç¤ºç¼–辑框
    /// </summary>
    [AttributeUsage(AttributeTargets.Property, AllowMultiple = false, Inherited = true)]
    public class ShowEditorAttribute : Attribute
    {
        /// <summary>
        ///
        /// </summary>
        public ShowEditorAttribute(bool showEditor)
        {
            this.ShowEditor = showEditor;
        }
        /// <summary>
        ///
        /// </summary>
        public bool ShowEditor { get; set; }
    }
}
WinFrmUI/Yw.WinFrmUI.Map.Core/00-core/MapUrlHelper.cs
@@ -28,5 +28,17 @@
            }
        }
        /// <summary>
        /// ç®€å•设置标记url
        /// </summary>
        public static string SetSimpleMarkerUrl
        {
            get
            {
                return AppDomain.CurrentDomain.BaseDirectory + @"map\gaode\html\SetSimpleMarker.html";
            }
        }
    }
}
WinFrmUI/Yw.WinFrmUI.Map.Core/03-SetSimpleMarker/IMapSetSimpleMarkerContainer.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
namespace Yw.WinFrmUI
{
    /// <summary>
    ///
    /// </summary>
    public interface IMapSetSimpleMarkerContainer : IWebBrowerContainer, IMapSetSimpleMarkerEvents
    {
        /// <summary>
        ///
        /// </summary>
        MapSetSimpleMarkerCallBackObj CallBackObj { get; }
        /// <summary>
        /// åŠ è½½marker
        /// </summary>
        Task<bool> LoadMarker(Yw.Model.Map.Marker marker);
    }
}
WinFrmUI/Yw.WinFrmUI.Map.Core/03-SetSimpleMarker/IMapSetSimpleMarkerEvents.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
namespace Yw.WinFrmUI
{
    /// <summary>
    /// ç®€å•设置标记事件集
    /// </summary>
    public interface IMapSetSimpleMarkerEvents : IWebBrowerEvents
    {
        /// <summary>
        /// è®¾ç½®æ ‡è®°äº‹ä»¶
        /// </summary>
        event Action<Yw.Model.Map.Marker> SetMarkerEvent;
    }
}
WinFrmUI/Yw.WinFrmUI.Map.Core/03-SetSimpleMarker/MapSetSimpleMarkerCallBackObj.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,25 @@
namespace Yw.WinFrmUI
{
    /// <summary>
    ///
    /// </summary>
    public class MapSetSimpleMarkerCallBackObj : CallBackObj, IMapSetSimpleMarkerEvents
    {
        /// <summary>
        /// è®¾ç½®æ ‡è®°äº‹ä»¶
        /// </summary>
        public event Action<Yw.Model.Map.Marker> SetMarkerEvent;
        /// <summary>
        /// è®¾ç½®æ ‡è®°
        /// </summary>
        public void SetMarker(string json)
        {
            var marker = JsonHelper.Json2Object<Yw.Model.Map.Marker>(json);
            this.SetMarkerEvent?.Invoke(marker);
        }
    }
}
WinFrmUI/Yw.WinFrmUI.Map.Core/03-SetSimpleMarker/MapSetSimpleMarkerContainer.Designer.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,55 @@
namespace Yw.WinFrmUI
{
    partial class MapSetSimpleMarkerContainer
    {
        /// <summary>
        /// å¿…需的设计器变量。
        /// </summary>
        private System.ComponentModel.IContainer components = null;
        /// <summary>
        /// æ¸…理所有正在使用的资源。
        /// </summary>
        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }
        #region ç»„件设计器生成的代码
        /// <summary>
        /// è®¾è®¡å™¨æ”¯æŒæ‰€éœ€çš„æ–¹æ³• - ä¸è¦ä¿®æ”¹
        /// ä½¿ç”¨ä»£ç ç¼–辑器修改此方法的内容。
        /// </summary>
        private void InitializeComponent()
        {
            webViewControl1 = new WebViewControl();
            SuspendLayout();
            //
            // webViewControl1
            //
            webViewControl1.Dock = DockStyle.Fill;
            webViewControl1.Location = new Point(0, 0);
            webViewControl1.Name = "webViewControl1";
            webViewControl1.Size = new Size(150, 150);
            webViewControl1.TabIndex = 0;
            //
            // MapSetMarkerContainer
            //
            AutoScaleDimensions = new SizeF(7F, 17F);
            AutoScaleMode = AutoScaleMode.Font;
            Controls.Add(webViewControl1);
            Name = "MapSetMarkerContainer";
            ResumeLayout(false);
        }
        #endregion
        private WebViewControl webViewControl1;
    }
}
WinFrmUI/Yw.WinFrmUI.Map.Core/03-SetSimpleMarker/MapSetSimpleMarkerContainer.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,96 @@
using Yw.Model.Map;
namespace Yw.WinFrmUI
{
    public partial class MapSetSimpleMarkerContainer : UserControl, IMapSetSimpleMarkerContainer
    {
        public MapSetSimpleMarkerContainer()
        {
            InitializeComponent();
        }
        public event Action LoadCompletedEvent;
        public event Action LoadFailedEvent;
        public event Action<HandingError> HandingErrorEvent;
        public event Action<Marker> SetMarkerEvent;
        public MapSetSimpleMarkerCallBackObj CallBackObj
        {
            get
            {
                if (_callBackObj == null)
                {
                    _callBackObj = new MapSetSimpleMarkerCallBackObj();
                }
                return _callBackObj;
            }
        }
        private MapSetSimpleMarkerCallBackObj _callBackObj;
        public bool IsInitialized
        {
            get
            {
                return _isInitialized;
            }
        }
        private bool _isInitialized;
        /// <summary>
        /// åˆå§‹åŒ–容器
        /// </summary>
        public async Task InitialContainer()
        {
            var callBackObj = this.CallBackObj;
            callBackObj.LoadCompletedEvent += CallBackObj_LoadCompletedEvent;
            callBackObj.LoadFailedEvent += CallBackObj_LoadFailedEvent;
            callBackObj.HandingErrorEvent += CallBackObj_HandingErrorEvent;
            callBackObj.SetMarkerEvent += CallBackObj_SetMarkerEvent;
            await this.webViewControl1.InitialWebBrower(MapUrlHelper.SetSimpleMarkerUrl, callBackObj);
        }
        //加载完成
        private void CallBackObj_LoadCompletedEvent()
        {
            _isInitialized = true;
            this.LoadCompletedEvent?.Invoke();
        }
        //加载失败
        private void CallBackObj_LoadFailedEvent()
        {
            this.LoadFailedEvent?.Invoke();
        }
        //处理错误
        private void CallBackObj_HandingErrorEvent(HandingError obj)
        {
            this.HandingErrorEvent?.Invoke(obj);
        }
        //设置标记
        private void CallBackObj_SetMarkerEvent(Yw.Model.Map.Marker obj)
        {
            this.SetMarkerEvent?.Invoke(obj);
        }
        /// <summary>
        /// åŠ è½½æ ‡è®°
        /// </summary>
        public async Task<bool> LoadMarker(Marker marker)
        {
            if (!this.IsInitialized)
            {
                return false;
            }
            return await this.webViewControl1.EvaluateScriptAsync<bool>("loadMarker", marker);
        }
    }
}
WinFrmUI/Yw.WinFrmUI.Map.Core/03-SetSimpleMarker/MapSetSimpleMarkerContainer.resx
copy from WinFrmUI/HStation.WinFrmUI.Xhs.Core/01-kpi/01-map/MapViewProjectListContainer.resx copy to WinFrmUI/Yw.WinFrmUI.Map.Core/03-SetSimpleMarker/MapSetSimpleMarkerContainer.resx
WinFrmUI/Yw.WinFrmUI.Map.Core/Yw.WinFrmUI.Map.Core.csproj
@@ -23,6 +23,7 @@
    <None Remove="map\gaode\html\polygon_set.html" />
    <None Remove="map\gaode\html\polygon_view.html" />
    <None Remove="map\gaode\html\SetMarker.html" />
    <None Remove="map\gaode\html\SetSimpleMarker.html" />
    <None Remove="map\gaode\html\sketch_create.html" />
    <None Remove="map\gaode\html\sketch_set.html" />
    <None Remove="map\gaode\html\sketch_view.html" />
@@ -71,6 +72,9 @@
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </Content>
    <Content Include="map\gaode\html\marker_multi_set.html">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </Content>
    <Content Include="map\gaode\html\SetSimpleMarker.html">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </Content>
    <Content Include="map\gaode\html\SetMarker.html">
@@ -151,4 +155,10 @@
    <ProjectReference Include="..\Yw.WinFrmUI.Core\Yw.WinFrmUI.Core.csproj" />
  </ItemGroup>
  <ItemGroup>
    <Compile Update="03-SetSimpleMarker\MapSetSimpleMarkerContainer.cs">
      <SubType>UserControl</SubType>
    </Compile>
  </ItemGroup>
</Project>
WinFrmUI/Yw.WinFrmUI.Map.Core/map/gaode/html/SetSimpleMarker.html
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,168 @@
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no, width=device-width">
    <title>简单设置点标记</title>
    <link rel="stylesheet" href="http://cache.amap.com/lbs/static/main1119.css" />
    <link href="../css/public.css" rel="stylesheet" />
    <script src="http://cache.amap.com/lbs/static/es5.min.js"></script>
    <script src="https://webapi.amap.com/maps?v=2.0&key=3627ed9deaac2622e26a7169f0c36b1b&plugin=AMap.Geocoder,AMap.Autocomplete,AMap.PlaceSearch"></script>
    <script src="../js/jquery-2.1.1.min.js"></script>
    <script src="../js/public.js"></script>
    <script src="../js/tools.js"></script>
</head>
<body>
    <div id="container"></div>
    <div class="search-box" id="search_box" style="display: block;">
        <input class="search-text" id="search_text" type="text" placeholder="请输入详细地址" onkeypress="keySearchAddress()" />
        <input class="search-button" id="search_button" type="button" onclick="searchAddress()" />
    </div>
    <script>
        let map;//地图对象 é«˜å¾·jsapi用
        let _map;//地图对象
        let _marker;//点
        let _marker_overlay;//点标记
        let _callBackObj;//交互对象
        $(document).ready(function () {
            try {
                map = _map = new AMap.Map('container', {
                    viewMode: '2D', //默认使用 2D æ¨¡å¼
                    resizeEnable: true,
                    expandZoomRange: true,
                    zoom: 10,
                    zooms: [3, 20],
                    center: [121.507845, 31.20351], //地图中心点
                });
                //地图点击时关闭搜索面板
                _map.on("click", function () {
                    if ($("#search_text").css("display") == 'block') {
                        $("#search_text").hide();
                    }
                });
                //地图点击
                _map.on("click", onMapDrawClick);
                //地图加载完成事件
                _map.on("complete", function () {
                    _callBackObj = window.chrome.webview.hostObjects.callBackObj;
                    _callBackObj.LoadCompleted();
                });
            }
            catch (e) {
                _callBackObj = window.chrome.webview.hostObjects.callBackObj
                _callBackObj.LoadFailed();
            }
        })
        //加载点标记
        function loadMarker(marker) {
            if (isEmpty(marker)) {
                return false;
            }
            _map.clearMap();
            _marker = marker;
            let lnglat = [_marker.Point.X, _marker.Point.Y];
            _marker_overlay = new AMap.Marker({
                position: lnglat,
                icon: new AMap.Icon({
                    size: new AMap.Size(32, 32),  //图标大小
                    image: "../img/current.png",
                    imageOffset: new AMap.Pixel(0, 0)
                }),
                offset: new AMap.Pixel(-15, -21)
            });
            _marker_overlay.setMap(_map);
            _map.setFitView();
            if (isEmpty(_marker.Address)) {
                let geocoder = new AMap.Geocoder({});
                geocoder.getAddress(lnglat, function (status, result) {
                    if (status === 'complete' && result.info === 'OK') {
                        let address = result.regeocode.formattedAddress;
                        _marker.Address = address;
                        _callbackObj.SetMarker(JSON.stringify(_marker));
                    }
                });
            }
            return true;
        }
        //地图绘制点标记点击事件
        function onMapDrawClick(e) {
            _map.clearMap();
            let lnglat = [e.lnglat.getLng(), e.lnglat.getLat()];
            _marker_overlay = new AMap.Marker({
                position: lnglat,
                icon: new AMap.Icon({
                    size: new AMap.Size(32, 32),  //图标大小
                    image: "../img/current.png",
                    imageOffset: new AMap.Pixel(0, 0)
                }),
                offset: new AMap.Pixel(-15, -21)
            });
            _marker_overlay.setMap(_map);
            _marker = { Point: { X: lnglat[0], Y: lnglat[1] }, Address: "" };
            let geocoder = new AMap.Geocoder({});
            geocoder.getAddress(lnglat, function (status, result) {
                if (status === 'complete' && result.info === 'OK') {
                    let address = result.regeocode.formattedAddress;
                    _marker.Address = address;
                    _callbackObj.SetMarker(JSON.stringify(_marker));
                }
            });
        }
        //根据详细地址查看地图
        function locateByAddress(address) {
            let geocoder = new AMap.Geocoder({});
            //地理编码,返回地理编码结果
            geocoder.getLocation(address, function (status, result) {
                if (status === 'complete' && result.info === 'OK') {
                    let geocode = result.geocodes;
                    _map.setCenter([geocode[0].location.getLng(), geocode[0].location.getLat()]);
                    let marker = new AMap.Marker({ position: [geocode[0].location.getLng(), geocode[0].location.getLat()] });
                    _map.setFitView(marker);
                }
                else {
                    let error = { ErrorType: error_type.locate_address, Message: "根据详细地址定位地图失败" };
                    callbackObj.handingError(JSON.stringify(error));
                }
            });
        }
        //搜索地址
        function searchAddress() {
            if ($("#search_text").css("display") == 'block') {
                let address = $("#search_text").val();
                if (!isEmpty(address)) {
                    locateByAddress(address);
                }
                $("#search_text").hide();
            }
            else {
                $("#search_text").show();
            }
        }
        //enter搜索地址
        function keySearchAddress() {
            if (event.keyCode == 13) {
                searchAddress();
            }
        }
    </script>
</body>
</html>