From 978d57ea2e89b07508f01f800ee97b36f19adec2 Mon Sep 17 00:00:00 2001
From: lg <999544862qq.com>
Date: 星期二, 27 八月 2024 11:03:23 +0800
Subject: [PATCH] 前后端框架
---
WebApi/Gs.Toolbox/ApiCore/Common/Mvc/RequestMethodAttribute.cs | 15
WebApi/Gs.Toolbox/Gs.Toolbox.csproj | 16
WebApi/Gs.Toolbox/ApiCore/Abstract/Repository/IRespository.cs | 8
DevApp/Gs.DevApp/App.config | 21
DevApp/Gs.DevApp/Resources/show_32x32.png | 0
DevApp/Gs.DevApp/Resources/listmultilevel_16x16.png | 0
DevApp/Gs.DevApp/Models/PageQueryModel.cs | 63
DevApp/Gs.DevApp/ToolBox/LogHelper.cs | 47
DevApp/Gs.DevApp/packages.config | 4
DevApp/Gs.DevApp/DevFrm/FrmMain.Designer.cs | 735 +++++
DevApp/Gs.DevApp/UserControl/ToolBarMenu.resx | 123
WebApi/Gs.HostIIS/Program.cs | 102
WebApi/Gs.Toolbox/ApiCore/Entity/IEntity.cs | 7
DevApp/Gs.DevApp/DevFrm/User/SysMenu.resx | 120
DevApp/Gs.DevApp/UserControl/ShowDialogForm.designer.cs | 143 +
DevApp/Gs.DevApp/DevFrm/User/SysMenu.cs | 27
WebApi/Gs.Toolbox/ApiCore/Group/ApiGroupAttribute.cs | 16
DevApp/Gs.DevApp/ToolBox/Utility.cs | 131
DevApp/Gs.DevApp/Resources/3dcylinder_16x16.png | 0
DevApp/Gs.DevApp/Resources/convert_16x16.png | 0
WebApi/GsMesSolution.sln | 43
WebApi/Gs.Demo/Gs.Demo.csproj | 15
DevApp/Gs.DevApp/DevFrm/FrmMain.resx | 801 +++++
DevApp/Gs.DevApp/TestForm/ToolbarForm1.cs | 21
WebApi/Gs.Toolbox/ApiCore/Abstract/IModule.cs | 11
DevApp/Gs.DevApp/Resources/user_16x16.png | 0
WebApi/Gs.Toolbox/ApiCore/Common/Inject/ExposeAttribute.cs | 12
DevApp/Gs.DevApp/Resources/trackingchanges_allmarkup_32x32.png | 0
DevApp/Gs.DevApp/Resources/exportfile_16x16.png | 0
DevApp/Gs.DevApp/Resources/area3d_32x32.png | 0
WebApi/Gs.HostIIS/Gs.HostIIS.csproj | 18
DevApp/Gs.DevApp/Properties/Settings.Designer.cs | 26
DevApp/Gs.DevApp/Resources/converttorange_16x16.png | 0
WebApi/.vs/ProjectEvaluation/gsmessolution.strings.v8.bin | 0
DevApp/Gs.DevApp/Resources/task_32x32.png | 0
DevApp/Gs.DevApp/Resources/area3d_16x16.png | 0
WebApi/Gs.Toolbox/ResponseResult.cs | 110
WebApi/Gs.Toolbox/ApiCore/Common/Helper/TypeHelper.cs | 44
WebApi/Gs.Toolbox/ApiCore/Common/Mvc/CustomApplicationModelConvention.cs | 114
WebApi/Gs.Toolbox/ApiCore/Common/Inject/InjectTypeManager.cs | 68
WebApi/Gs.Toolbox/ApiCore/Common/Inject/InjectTypeContext.cs | 16
DevApp/Gs.DevApp/Resources/3dcylinder_32x32.png | 0
DevApp/Gs.DevApp/Resources/converttorange_32x32.png | 0
DevApp/Gs.DevApp/Resources/exportfile_32x32.png | 0
DevApp/Gs.DevApp/TestForm/ToolbarForm1.Designer.cs | 140 +
WebApi/Gs.Toolbox/ApiCore/Extensions/IServiceCollectionExtension.cs | 16
DevApp/Gs.DevApp/Resources/3dcolumn_16x16.png | 0
DevApp/Gs.DevApp/DevFrm/User/Organization.Designer.cs | 253 +
WebApi/Gs.HostIIS/Properties/launchSettings.json | 31
DevApp/Gs.DevApp/Resources/3dcolumn_32x32.png | 0
DevApp/Gs.DevApp/Resources/legendnone2_32x32.png | 0
WebApi/Gs.Toolbox/ApiCore/Abstract/Inject/ITransient.cs | 6
DevApp/Gs.DevApp/Resources/checkbox2_16x16.png | 0
DevApp/Gs.DevApp/ToolBox/Msg.cs | 100
WebApi/.vs/GsMesSolution/v17/.futdcache.v2 | 0
DevApp/Gs.DevApp/Properties/Resources.resx | 238 +
DevApp/Gs.DevApp/Resources/usergroup_32x32.png | 0
WebApi/Gs.Toolbox/ApiCore/Group/ApiGroupInfoAttribute.cs | 12
DevApp/Gs.DevApp/Resources/show_16x16.png | 0
WebApi/Gs.Toolbox/ApiCore/Extensions/ApplicationBuilderExtension.cs | 78
DevApp/Gs.DevApp/Resources/apply_32x32.png | 0
DevApp/Gs.DevApp/Resources/checkbox2_32x32.png | 0
WebApi/Gs.Toolbox/AppSettingsHelper.cs | 17
DevApp/Gs.DevApp/Resources/removegroupfooter_32x32.png | 0
DevApp/Gs.DevApp/Properties/Settings.settings | 7
WebApi/Gs.HostIIS/appsettings.Development.json | 8
WebApi/Gs.Toolbox/ApiCore/Abstract/Inject/ISingleton.cs | 6
DevApp/Gs.DevApp/DevFrm/FrmLogin.resx | 140 +
DevApp/GsDevSolution.sln | 25
DevApp/Gs.DevApp/Resources/checkbox_32x32.png | 0
DevApp/Gs.DevApp/DevFrm/User/Organization.cs | 25
DevApp/Gs.DevApp/UserControl/ShowDialogForm.resx | 120
WebApi/Gs.Toolbox/ApiCore/Abstract/Inject/IScope.cs | 6
WebApi/Gs.Toolbox/ApiCore/Abstract/CustomDependenceAttribute.cs | 12
DevApp/Gs.DevApp/DevFrm/FrmLogin.Designer.cs | 247 +
WebApi/Gs.Toolbox/ApiCore/Extensions/ApplicationExtension.cs | 77
DevApp/Gs.DevApp/Gs.DevApp.csproj | 194 +
WebApi/Gs.Toolbox/ApiCore/Abstract/Mvc/IRomteService.cs | 6
DevApp/Gs.DevApp/Resources/convert_32x32.png | 0
WebApi/.vs/GsMesSolution/DesignTimeBuild/.dtbcache.v2 | 0
DevApp/Gs.DevApp/DevFrm/User/SysMenuAdd.cs | 88
WebApi/.vs/GsMesSolution/v17/DocumentLayout.json | 31
WebApi/Gs.Demo/Modes/Student.cs | 56
DevApp/Gs.DevApp/Resources/trackingchanges_allmarkup_16x16.png | 0
DevApp/Gs.DevApp/Properties/AssemblyInfo.cs | 32
DevApp/Gs.DevApp/DevFrm/User/Organization.resx | 120
WebApi/Gs.Demo/Service/Test/Test.cs | 194 +
WebApi/Gs.Toolbox/ApiCore/Common/Mvc/RequestMethods.cs | 8
DevApp/Gs.DevApp/UserControl/ToolBarMenu.Designer.cs | 295 ++
DevApp/Gs.DevApp/Resources/linktoprevious_16x16.png | 0
WebApi/Gs.Toolbox/ApiCore/Extensions/StringExtension.cs | 14
DevApp/Gs.DevApp/TestForm/FluentDesignForm1.Designer.cs | 105
DevApp/Gs.DevApp/UserControl/ShowDialogForm.cs | 172 +
WebApi/.vs/GsMesSolution/FileContentIndex/a3306c0b-3453-46b3-bcf4-6e38ab6b139e.vsidx | 0
DevApp/Gs.DevApp/DevFrm/User/SysMenu.Designer.cs | 208 +
DevApp/Gs.DevApp/Resources/editingfillleft_32x32.png | 0
WebApi/Gs.Toolbox/ApiCore/Common/Mvc/CustomControllerFeatureProvider.cs | 111
WebApi/.vs/ProjectEvaluation/gsmessolution.projects.v8.bin | 0
WebApi/Gs.Toolbox/DbHelperSQL.cs | 666 ++++
DevApp/Gs.DevApp/Program.cs | 30
WebApi/Gs.HostIIS/appsettings.json | 12
DevApp/Gs.DevApp/DevFrm/User/SysMenuAdd.Designer.cs | 371 ++
DevApp/Gs.DevApp/Properties/Resources.Designer.cs | 453 +++
DevApp/Gs.DevApp/Resources/renamedatasource_32x32.png | 0
DevApp/Gs.DevApp/DevFrm/FrmMain.cs | 159 +
DevApp/Gs.DevApp/Resources/trackingchanges_trackchanges_16x16.png | 0
DevApp/Gs.DevApp/UserControl/ToolBarMenu.cs | 31
WebApi/.vs/ProjectEvaluation/gsmessolution.metadata.v8.bin | 0
DevApp/Gs.DevApp/DevFrm/User/SysMenuAdd.resx | 120
DevApp/Gs.DevApp/Resources/trackingchanges_trackchanges_32x32.png | 0
DevApp/Gs.DevApp/Resources/dropandhighlowlines_16x16.png | 0
DevApp/Gs.DevApp/Resources/renamedatasource_16x16.png | 0
DevApp/Gs.DevApp/Models/ReturnModel.cs | 47
DevApp/Gs.DevApp/Resources/colormixer_32x32.png | 0
DevApp/Gs.DevApp/Resources/forcetesting_32x32.png | 0
WebApi/Gs.Toolbox/ApiCore/Common/Inject/InjectTypeChecker.cs | 36
DevApp/Gs.DevApp/Resources/filledradarwithoutmarkers_32x32.png | 0
DevApp/Gs.DevApp/DevFrm/FrmLogin.cs | 61
DevApp/Gs.DevApp/TestForm/FluentDesignForm1.cs | 20
DevApp/Gs.DevApp/Resources/forcetesting_16x16.png | 0
WebApi/Gs.Toolbox/ApiCore/Group/ApiGroupNames.cs | 18
WebApi/Gs.Toolbox/ApiCore/Abstract/Mvc/IBussinessService.cs | 8
DevApp/Gs.DevApp/Resources/removegroupfooter_16x16.png | 0
DevApp/Gs.DevApp/Resources/download_32x32.png | 0
WebApi/Gs.Toolbox/LogHelper.cs | 41
DevApp/Gs.DevApp/Resources/dropandhighlowlines_32x32.png | 0
WebApi/Gs.HostIIS/RequestAuthorizeAttribute.cs | 31
127 files changed, 8,179 insertions(+), 0 deletions(-)
diff --git a/DevApp/Gs.DevApp/App.config b/DevApp/Gs.DevApp/App.config
new file mode 100644
index 0000000..ae4c49f
--- /dev/null
+++ b/DevApp/Gs.DevApp/App.config
@@ -0,0 +1,21 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<configuration>
+ <configSections>
+ <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System">
+ <section name="DevExpress.LookAndFeel.Design.AppSettings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
+ </sectionGroup>
+ </configSections>
+ <applicationSettings>
+ <DevExpress.LookAndFeel.Design.AppSettings>
+ <setting name="DPIAwarenessMode" serializeAs="String">
+ <value>System</value>
+ </setting>
+ <setting name="RegisterBonusSkins" serializeAs="String">
+ <value>True</value>
+ </setting>
+ </DevExpress.LookAndFeel.Design.AppSettings>
+ </applicationSettings>
+ <startup>
+ <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8" />
+ </startup>
+</configuration>
\ No newline at end of file
diff --git a/DevApp/Gs.DevApp/DevFrm/FrmLogin.Designer.cs b/DevApp/Gs.DevApp/DevFrm/FrmLogin.Designer.cs
new file mode 100644
index 0000000..855c6a1
--- /dev/null
+++ b/DevApp/Gs.DevApp/DevFrm/FrmLogin.Designer.cs
@@ -0,0 +1,247 @@
+锘�
+namespace Gs.DevApp.DevFrm
+{
+ partial class FrmLogin
+ {
+ /// <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()
+ {
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmLogin));
+ this.lbVersion = new System.Windows.Forms.Label();
+ this.panel1 = new System.Windows.Forms.Panel();
+ this.txtUser = new DevExpress.XtraEditors.TextEdit();
+ this.chkSaveLoginInfo = new DevExpress.XtraEditors.CheckEdit();
+ this.txtPwd = new DevExpress.XtraEditors.TextEdit();
+ this.btnCancel = new DevExpress.XtraEditors.SimpleButton();
+ this.labelControl3 = new DevExpress.XtraEditors.LabelControl();
+ this.txtDataset = new DevExpress.XtraEditors.LookUpEdit();
+ this.btnLogin = new DevExpress.XtraEditors.SimpleButton();
+ this.labelControl2 = new DevExpress.XtraEditors.LabelControl();
+ this.labelControl1 = new DevExpress.XtraEditors.LabelControl();
+ this.lblLoadingInfo = new System.Windows.Forms.Label();
+ this.panel1.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.txtUser.Properties)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.chkSaveLoginInfo.Properties)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.txtPwd.Properties)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.txtDataset.Properties)).BeginInit();
+ this.SuspendLayout();
+ //
+ // lbVersion
+ //
+ this.lbVersion.AutoSize = true;
+ this.lbVersion.BackColor = System.Drawing.Color.Transparent;
+ this.lbVersion.Font = new System.Drawing.Font("Tahoma", 9F);
+ this.lbVersion.ForeColor = System.Drawing.Color.White;
+ this.lbVersion.Location = new System.Drawing.Point(501, 33);
+ this.lbVersion.Name = "lbVersion";
+ this.lbVersion.Size = new System.Drawing.Size(100, 18);
+ this.lbVersion.TabIndex = 244;
+ this.lbVersion.Text = "V5.0 (姝e紡鐗�)";
+ //
+ // panel1
+ //
+ this.panel1.BackColor = System.Drawing.Color.Transparent;
+ this.panel1.Controls.Add(this.txtUser);
+ this.panel1.Controls.Add(this.chkSaveLoginInfo);
+ this.panel1.Controls.Add(this.txtPwd);
+ this.panel1.Controls.Add(this.btnCancel);
+ this.panel1.Controls.Add(this.labelControl3);
+ this.panel1.Controls.Add(this.txtDataset);
+ this.panel1.Controls.Add(this.btnLogin);
+ this.panel1.Controls.Add(this.labelControl2);
+ this.panel1.Controls.Add(this.labelControl1);
+ this.panel1.Location = new System.Drawing.Point(218, 187);
+ this.panel1.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+ this.panel1.Name = "panel1";
+ this.panel1.Size = new System.Drawing.Size(392, 239);
+ this.panel1.TabIndex = 243;
+ //
+ // txtUser
+ //
+ this.txtUser.EditValue = "admin";
+ this.txtUser.Location = new System.Drawing.Point(102, 9);
+ this.txtUser.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+ this.txtUser.Name = "txtUser";
+ this.txtUser.Properties.Appearance.Font = new System.Drawing.Font("Tahoma", 10F);
+ this.txtUser.Properties.Appearance.Options.UseFont = true;
+ this.txtUser.Properties.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.HotFlat;
+ this.txtUser.Size = new System.Drawing.Size(154, 30);
+ this.txtUser.TabIndex = 21;
+ //
+ // chkSaveLoginInfo
+ //
+ this.chkSaveLoginInfo.Location = new System.Drawing.Point(99, 157);
+ this.chkSaveLoginInfo.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+ this.chkSaveLoginInfo.Name = "chkSaveLoginInfo";
+ this.chkSaveLoginInfo.Properties.Appearance.ForeColor = System.Drawing.Color.White;
+ this.chkSaveLoginInfo.Properties.Appearance.Options.UseForeColor = true;
+ this.chkSaveLoginInfo.Properties.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.UltraFlat;
+ this.chkSaveLoginInfo.Properties.Caption = "淇濆瓨鐧诲綍淇℃伅";
+ this.chkSaveLoginInfo.Size = new System.Drawing.Size(157, 26);
+ this.chkSaveLoginInfo.TabIndex = 17;
+ //
+ // txtPwd
+ //
+ this.txtPwd.EditValue = "csframework";
+ this.txtPwd.Location = new System.Drawing.Point(102, 48);
+ this.txtPwd.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+ this.txtPwd.Name = "txtPwd";
+ this.txtPwd.Properties.Appearance.Font = new System.Drawing.Font("Tahoma", 10F);
+ this.txtPwd.Properties.Appearance.Options.UseFont = true;
+ this.txtPwd.Properties.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.HotFlat;
+ this.txtPwd.Properties.PasswordChar = '*';
+ this.txtPwd.Size = new System.Drawing.Size(154, 30);
+ this.txtPwd.TabIndex = 22;
+ //
+ // btnCancel
+ //
+ this.btnCancel.ButtonStyle = DevExpress.XtraEditors.Controls.BorderStyles.HotFlat;
+ this.btnCancel.Cursor = System.Windows.Forms.Cursors.Hand;
+ this.btnCancel.ImageOptions.Image = ((System.Drawing.Image)(resources.GetObject("btnCancel.ImageOptions.Image")));
+ this.btnCancel.Location = new System.Drawing.Point(191, 193);
+ this.btnCancel.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+ this.btnCancel.Name = "btnCancel";
+ this.btnCancel.Size = new System.Drawing.Size(87, 37);
+ this.btnCancel.TabIndex = 15;
+ this.btnCancel.Text = "鍙栨秷 (&C)";
+ //
+ // labelControl3
+ //
+ this.labelControl3.Appearance.ForeColor = System.Drawing.Color.White;
+ this.labelControl3.Appearance.Options.UseForeColor = true;
+ this.labelControl3.Appearance.Options.UseTextOptions = true;
+ this.labelControl3.Appearance.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Far;
+ this.labelControl3.AutoSizeMode = DevExpress.XtraEditors.LabelAutoSizeMode.None;
+ this.labelControl3.Location = new System.Drawing.Point(6, 89);
+ this.labelControl3.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+ this.labelControl3.Name = "labelControl3";
+ this.labelControl3.Size = new System.Drawing.Size(93, 18);
+ this.labelControl3.TabIndex = 233;
+ this.labelControl3.Text = "甯愬锛�";
+ //
+ // txtDataset
+ //
+ this.txtDataset.Location = new System.Drawing.Point(102, 86);
+ this.txtDataset.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+ this.txtDataset.Name = "txtDataset";
+ this.txtDataset.Properties.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.HotFlat;
+ this.txtDataset.Properties.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] {
+ new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Combo)});
+ this.txtDataset.Properties.Columns.AddRange(new DevExpress.XtraEditors.Controls.LookUpColumnInfo[] {
+ new DevExpress.XtraEditors.Controls.LookUpColumnInfo("DataSetID", "甯愬缂栧彿", 100, DevExpress.Utils.FormatType.None, "", true, DevExpress.Utils.HorzAlignment.Default, DevExpress.Data.ColumnSortOrder.None, DevExpress.Utils.DefaultBoolean.Default),
+ new DevExpress.XtraEditors.Controls.LookUpColumnInfo("DataSetName", "甯愬鍚嶇О", 200, DevExpress.Utils.FormatType.None, "", true, DevExpress.Utils.HorzAlignment.Default, DevExpress.Data.ColumnSortOrder.None, DevExpress.Utils.DefaultBoolean.Default)});
+ this.txtDataset.Properties.NullText = "";
+ this.txtDataset.Properties.PopupWidth = 343;
+ this.txtDataset.Size = new System.Drawing.Size(154, 26);
+ this.txtDataset.TabIndex = 228;
+ //
+ // btnLogin
+ //
+ this.btnLogin.ButtonStyle = DevExpress.XtraEditors.Controls.BorderStyles.HotFlat;
+ this.btnLogin.Cursor = System.Windows.Forms.Cursors.Hand;
+ this.btnLogin.ImageOptions.Image = ((System.Drawing.Image)(resources.GetObject("btnLogin.ImageOptions.Image")));
+ this.btnLogin.Location = new System.Drawing.Point(101, 193);
+ this.btnLogin.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+ this.btnLogin.Name = "btnLogin";
+ this.btnLogin.Size = new System.Drawing.Size(87, 37);
+ this.btnLogin.TabIndex = 14;
+ this.btnLogin.Text = "鐧诲綍 (&L)";
+ //
+ // labelControl2
+ //
+ this.labelControl2.Appearance.ForeColor = System.Drawing.Color.White;
+ this.labelControl2.Appearance.Options.UseForeColor = true;
+ this.labelControl2.Appearance.Options.UseTextOptions = true;
+ this.labelControl2.Appearance.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Far;
+ this.labelControl2.AutoSizeMode = DevExpress.XtraEditors.LabelAutoSizeMode.None;
+ this.labelControl2.Location = new System.Drawing.Point(6, 51);
+ this.labelControl2.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+ this.labelControl2.Name = "labelControl2";
+ this.labelControl2.Size = new System.Drawing.Size(93, 18);
+ this.labelControl2.TabIndex = 232;
+ this.labelControl2.Text = "瀵嗙爜锛�";
+ //
+ // labelControl1
+ //
+ this.labelControl1.Appearance.ForeColor = System.Drawing.Color.White;
+ this.labelControl1.Appearance.Options.UseForeColor = true;
+ this.labelControl1.Appearance.Options.UseTextOptions = true;
+ this.labelControl1.Appearance.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Far;
+ this.labelControl1.AutoSizeMode = DevExpress.XtraEditors.LabelAutoSizeMode.None;
+ this.labelControl1.Location = new System.Drawing.Point(6, 13);
+ this.labelControl1.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+ this.labelControl1.Name = "labelControl1";
+ this.labelControl1.Size = new System.Drawing.Size(93, 18);
+ this.labelControl1.TabIndex = 231;
+ this.labelControl1.Text = "鐧诲綍甯愬彿锛�";
+ //
+ // lblLoadingInfo
+ //
+ this.lblLoadingInfo.AutoSize = true;
+ this.lblLoadingInfo.BackColor = System.Drawing.Color.Transparent;
+ this.lblLoadingInfo.ForeColor = System.Drawing.Color.White;
+ this.lblLoadingInfo.Location = new System.Drawing.Point(215, 444);
+ this.lblLoadingInfo.Name = "lblLoadingInfo";
+ this.lblLoadingInfo.Size = new System.Drawing.Size(83, 18);
+ this.lblLoadingInfo.TabIndex = 242;
+ this.lblLoadingInfo.Text = "鍑嗗灏辩华...";
+ //
+ // FrmLogin
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 18F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(824, 494);
+ this.Controls.Add(this.lbVersion);
+ this.Controls.Add(this.panel1);
+ this.Controls.Add(this.lblLoadingInfo);
+ this.Name = "FrmLogin";
+ this.Text = "FrmLogin";
+ this.panel1.ResumeLayout(false);
+ ((System.ComponentModel.ISupportInitialize)(this.txtUser.Properties)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.chkSaveLoginInfo.Properties)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.txtPwd.Properties)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.txtDataset.Properties)).EndInit();
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.Label lbVersion;
+ private System.Windows.Forms.Panel panel1;
+ private DevExpress.XtraEditors.TextEdit txtUser;
+ private DevExpress.XtraEditors.CheckEdit chkSaveLoginInfo;
+ private DevExpress.XtraEditors.TextEdit txtPwd;
+ private DevExpress.XtraEditors.SimpleButton btnCancel;
+ private DevExpress.XtraEditors.LabelControl labelControl3;
+ private DevExpress.XtraEditors.LookUpEdit txtDataset;
+ private DevExpress.XtraEditors.SimpleButton btnLogin;
+ private DevExpress.XtraEditors.LabelControl labelControl2;
+ private DevExpress.XtraEditors.LabelControl labelControl1;
+ private System.Windows.Forms.Label lblLoadingInfo;
+ }
+}
\ No newline at end of file
diff --git a/DevApp/Gs.DevApp/DevFrm/FrmLogin.cs b/DevApp/Gs.DevApp/DevFrm/FrmLogin.cs
new file mode 100644
index 0000000..15876de
--- /dev/null
+++ b/DevApp/Gs.DevApp/DevFrm/FrmLogin.cs
@@ -0,0 +1,61 @@
+锘縰sing DevExpress.XtraEditors;
+using Gs.DevApp.ToolBox;
+using Newtonsoft.Json;
+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 Gs.DevApp.DevFrm
+{
+ public partial class FrmLogin : DevExpress.XtraEditors.XtraForm
+ {
+ public FrmLogin()
+ {
+ InitializeComponent();
+ btnLogin.Click += BtnLogin_Click;
+ btnCancel.Click += BtnCancel_Click;
+ }
+
+ private void BtnCancel_Click(object sender, EventArgs e)
+ {
+ if (Msg.AskQuestion("纭畾瑕侀��鍑虹郴缁熷悧?"))
+ {
+ // frmMain1.IsClosing = true;
+ Application.Exit();
+ }
+ }
+
+ private void BtnLogin_Click(object sender, EventArgs e)
+ {
+ //int i = 199;
+ //ShowDialogForm sdf = new ShowDialogForm("鎻愮ず", "姝e湪鐧诲綍......", "璇疯�愬績绛夊�欙紝姝e湪楠岃瘉鎮ㄧ殑韬唤锛�", i);
+ //for (int j = 1; j < i; j++)
+ //{
+ // sdf.SetCaption("鎵ц杩涘害锛�" + j.ToString() + "/" + i.ToString() + "锛�");
+ //}
+ var _obj = new
+ {
+ accountPwd = txtUser.Text.Trim(),
+ accountNo = txtPwd.Text.Trim(),
+ orgGuid = Guid.NewGuid()
+ };
+ string json = JsonConvert.SerializeObject(_obj);
+ try
+ {
+ Utility.HttpPost("", "User/UserLogin", json);
+ }
+ catch (Exception ex)
+ {
+ throw ex;
+ }
+ // sdf.Close();
+
+ }
+ }
+}
\ No newline at end of file
diff --git a/DevApp/Gs.DevApp/DevFrm/FrmLogin.resx b/DevApp/Gs.DevApp/DevFrm/FrmLogin.resx
new file mode 100644
index 0000000..2e477c9
--- /dev/null
+++ b/DevApp/Gs.DevApp/DevFrm/FrmLogin.resx
@@ -0,0 +1,140 @@
+锘�<?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="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+ <data name="btnCancel.ImageOptions.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAABF0RVh0VGl0
+ bGUAQ2xvc2U7RXhpdDsFGf+FAAAArElEQVQ4T7XSOwoCQRCE4c0E8XEDQTMRA+/gTTykGBuYGm6olxBE
+ tP1LHGl1WoZVg2+DYrqYZrYys6/cPvVibk38teBUkkUFNcbYuGyFCXYuyxYcMYSyPlSi4fY9m+KMsECW
+ aEF5D2m4gzUeZ6MC8SXZYflU4K8taZ2nc1GBH+4i3eStJFdwwABpWNf268xwQVggW4zgd1aJnnbvsrBA
+ 9JyvWfGPVOx3Bc1ZdQWpA3U147gCvgAAAABJRU5ErkJggg==
+</value>
+ </data>
+ <data name="btnLogin.ImageOptions.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACB0RVh0VGl0
+ bGUATmV3O05ld0VtcGxveWVlO05ld1BlcnNvbjveWVScAAAA3ElEQVQ4T5WOPQ5BQRSF3wYsgohCJXRq
+ PRWJJaktgFLUOjsQ0egURKEgaj/NOEfuyJl5E4/iy8y5c7+Tyc6LruI0O+cKUbEVnUkhxhd4ycOcDUdL
+ cgVjULKcK1AxyCbwJBPLuYKiH/iCm+VkgZf0VJlcKJNUgRZ9sshkRpkEBRr8AmiCJ/Ay75z9XED64GQM
+ bPZGnSDYAsUjqFgmZXAAPWZ1goDHBngAfnsDqqAGtjbjW12duGBui9+YqhMXnKPlFCd14oJ9tJxip05c
+ 0AFrcLdlhbMVaKsTFPyPy16LX4vunIH/egAAAABJRU5ErkJggg==
+</value>
+ </data>
+</root>
\ No newline at end of file
diff --git a/DevApp/Gs.DevApp/DevFrm/FrmMain.Designer.cs b/DevApp/Gs.DevApp/DevFrm/FrmMain.Designer.cs
new file mode 100644
index 0000000..8134231
--- /dev/null
+++ b/DevApp/Gs.DevApp/DevFrm/FrmMain.Designer.cs
@@ -0,0 +1,735 @@
+锘�
+namespace Gs.DevApp.DevFrm
+{
+ partial class FrmMain
+ {
+ /// <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()
+ {
+ this.components = new System.ComponentModel.Container();
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmMain));
+ this.fluentDesignFormContainer1 = new DevExpress.XtraBars.FluentDesignSystem.FluentDesignFormContainer();
+ this.statusStrip1 = new System.Windows.Forms.StatusStrip();
+ this.toolStripStatusLabel1 = new System.Windows.Forms.ToolStripStatusLabel();
+ this.toolStripStatusLabel2 = new System.Windows.Forms.ToolStripStatusLabel();
+ this.tab = new DevExpress.XtraTab.XtraTabControl();
+ this.xtraTabPage11 = new DevExpress.XtraTab.XtraTabPage();
+ this.xtraTabPage1 = new DevExpress.XtraTab.XtraTabPage();
+ this.xtraTabPage2 = new DevExpress.XtraTab.XtraTabPage();
+ this.xtraTabPage3 = new DevExpress.XtraTab.XtraTabPage();
+ this.xtraTabPage4 = new DevExpress.XtraTab.XtraTabPage();
+ this.xtraTabPage5 = new DevExpress.XtraTab.XtraTabPage();
+ this.fluentDesignFormControl1 = new DevExpress.XtraBars.FluentDesignSystem.FluentDesignFormControl();
+ this.barButtonItem1 = new DevExpress.XtraBars.BarButtonItem();
+ this.barCheckItem1 = new DevExpress.XtraBars.BarCheckItem();
+ this.barButtonItem2 = new DevExpress.XtraBars.BarButtonItem();
+ this.barButtonItem3 = new DevExpress.XtraBars.BarButtonItem();
+ this.barSubItem1 = new DevExpress.XtraBars.BarSubItem();
+ this.barButtonItem4 = new DevExpress.XtraBars.BarButtonItem();
+ this.barSubItem2 = new DevExpress.XtraBars.BarSubItem();
+ this.barAbout = new DevExpress.XtraBars.BarSubItem();
+ this.barUs = new DevExpress.XtraBars.BarButtonItem();
+ this.barHelp = new DevExpress.XtraBars.BarButtonItem();
+ this.barButtonItem7 = new DevExpress.XtraBars.BarButtonItem();
+ this.barHeaderItem1 = new DevExpress.XtraBars.BarHeaderItem();
+ this.barLargeButtonItem1 = new DevExpress.XtraBars.BarLargeButtonItem();
+ this.barMdiChildrenListItem1 = new DevExpress.XtraBars.BarMdiChildrenListItem();
+ this.barButtonItem8 = new DevExpress.XtraBars.BarButtonItem();
+ this.barLinkContainerItem1 = new DevExpress.XtraBars.BarLinkContainerItem();
+ this.barDockingMenuItem1 = new DevExpress.XtraBars.BarDockingMenuItem();
+ this.barListItem1 = new DevExpress.XtraBars.BarListItem();
+ this.barListItem2 = new DevExpress.XtraBars.BarListItem();
+ this.barMy = new DevExpress.XtraBars.BarSubItem();
+ this.barExit = new DevExpress.XtraBars.BarButtonItem();
+ this.barPwd = new DevExpress.XtraBars.BarButtonItem();
+ this.barSubItem3 = new DevExpress.XtraBars.BarSubItem();
+ this.barToggleSwitchItem1 = new DevExpress.XtraBars.BarToggleSwitchItem();
+ this.barToolbarsListItem1 = new DevExpress.XtraBars.BarToolbarsListItem();
+ this.barMdiChildrenListItem2 = new DevExpress.XtraBars.BarMdiChildrenListItem();
+ this.barListItem3 = new DevExpress.XtraBars.BarListItem();
+ this.barHeaderItem2 = new DevExpress.XtraBars.BarHeaderItem();
+ this.barListItem4 = new DevExpress.XtraBars.BarListItem();
+ this.barButtonItem5 = new DevExpress.XtraBars.BarButtonItem();
+ this.fluentFormDefaultManager1 = new DevExpress.XtraBars.FluentDesignSystem.FluentFormDefaultManager(this.components);
+ this.accordionControlElement10 = new DevExpress.XtraBars.Navigation.AccordionControlElement();
+ this.accordionControlElement15 = new DevExpress.XtraBars.Navigation.AccordionControlElement();
+ this.accordionControlElement16 = new DevExpress.XtraBars.Navigation.AccordionControlElement();
+ this.accordionControlElement9 = new DevExpress.XtraBars.Navigation.AccordionControlElement();
+ this.accordionControlElement11 = new DevExpress.XtraBars.Navigation.AccordionControlElement();
+ this.accordionControlElement12 = new DevExpress.XtraBars.Navigation.AccordionControlElement();
+ this.accordionControlElement13 = new DevExpress.XtraBars.Navigation.AccordionControlElement();
+ this.accordionControlElement14 = new DevExpress.XtraBars.Navigation.AccordionControlElement();
+ this.accordionControlElement1 = new DevExpress.XtraBars.Navigation.AccordionControlElement();
+ this.accordionControlElement3 = new DevExpress.XtraBars.Navigation.AccordionControlElement();
+ this.accordionControlElement2 = new DevExpress.XtraBars.Navigation.AccordionControlElement();
+ this.accordionControlElement4 = new DevExpress.XtraBars.Navigation.AccordionControlElement();
+ this.accordionControlElement5 = new DevExpress.XtraBars.Navigation.AccordionControlElement();
+ this.accordionControlElement7 = new DevExpress.XtraBars.Navigation.AccordionControlElement();
+ this.accordionControlElement6 = new DevExpress.XtraBars.Navigation.AccordionControlElement();
+ this.acrd = new DevExpress.XtraBars.Navigation.AccordionControl();
+ this.accordionControlElement8 = new DevExpress.XtraBars.Navigation.AccordionControlElement();
+ this.accordionControlElement17 = new DevExpress.XtraBars.Navigation.AccordionControlElement();
+ this.accordionControlElement18 = new DevExpress.XtraBars.Navigation.AccordionControlElement();
+ this.fluentDesignFormContainer1.SuspendLayout();
+ this.statusStrip1.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.tab)).BeginInit();
+ this.tab.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.fluentDesignFormControl1)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.fluentFormDefaultManager1)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.acrd)).BeginInit();
+ this.SuspendLayout();
+ //
+ // fluentDesignFormContainer1
+ //
+ this.fluentDesignFormContainer1.Controls.Add(this.statusStrip1);
+ this.fluentDesignFormContainer1.Controls.Add(this.tab);
+ this.fluentDesignFormContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.fluentDesignFormContainer1.Location = new System.Drawing.Point(208, 39);
+ this.fluentDesignFormContainer1.Name = "fluentDesignFormContainer1";
+ this.fluentDesignFormContainer1.Size = new System.Drawing.Size(806, 727);
+ this.fluentDesignFormContainer1.TabIndex = 0;
+ //
+ // statusStrip1
+ //
+ this.statusStrip1.ImageScalingSize = new System.Drawing.Size(20, 20);
+ this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.toolStripStatusLabel1,
+ this.toolStripStatusLabel2});
+ this.statusStrip1.Location = new System.Drawing.Point(0, 701);
+ this.statusStrip1.Name = "statusStrip1";
+ this.statusStrip1.Size = new System.Drawing.Size(806, 26);
+ this.statusStrip1.TabIndex = 5;
+ this.statusStrip1.Text = "statusStrip1";
+ //
+ // toolStripStatusLabel1
+ //
+
+ this.toolStripStatusLabel1.Name = "toolStripStatusLabel1";
+ this.toolStripStatusLabel1.Size = new System.Drawing.Size(254, 20);
+ this.toolStripStatusLabel1.Text = "褰撳墠鐢ㄦ埛锛歛dmin锛堣秴绾х鐞嗗憳锛�";
+
+ //
+ // toolStripStatusLabel2
+ //
+
+ this.toolStripStatusLabel2.Name = "toolStripStatusLabel2";
+ this.toolStripStatusLabel2.Size = new System.Drawing.Size(194, 20);
+ this.toolStripStatusLabel2.Text = "鎶�鏈敮鎸侊細瀹佹尝骞挎繁绉戞妧";
+ //
+ // tab
+ //
+ this.tab.ClosePageButtonShowMode = DevExpress.XtraTab.ClosePageButtonShowMode.InActiveTabPageHeader;
+ this.tab.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.tab.Location = new System.Drawing.Point(0, 0);
+ this.tab.Name = "tab";
+ this.tab.SelectedTabPage = this.xtraTabPage11;
+ this.tab.Size = new System.Drawing.Size(806, 727);
+ this.tab.TabIndex = 4;
+ this.tab.TabPages.AddRange(new DevExpress.XtraTab.XtraTabPage[] {
+ this.xtraTabPage1,
+ this.xtraTabPage2,
+ this.xtraTabPage3,
+ this.xtraTabPage4,
+ this.xtraTabPage5,
+ this.xtraTabPage11});
+ //
+ // xtraTabPage11
+ //
+ this.xtraTabPage11.ImageOptions.Image = ((System.Drawing.Image)(resources.GetObject("xtraTabPage11.ImageOptions.Image")));
+ this.xtraTabPage11.Name = "xtraTabPage11";
+ this.xtraTabPage11.Size = new System.Drawing.Size(804, 695);
+ this.xtraTabPage11.Text = "鍗曟嵁缂栧彿";
+ //
+ // xtraTabPage1
+ //
+ this.xtraTabPage1.ImageOptions.Image = ((System.Drawing.Image)(resources.GetObject("xtraTabPage1.ImageOptions.Image")));
+ this.xtraTabPage1.Name = "xtraTabPage1";
+ this.xtraTabPage1.ShowCloseButton = DevExpress.Utils.DefaultBoolean.True;
+ this.xtraTabPage1.Size = new System.Drawing.Size(804, 695);
+ this.xtraTabPage1.Text = "缁勭粐鏋舵瀯";
+ //
+ // xtraTabPage2
+ //
+ this.xtraTabPage2.ImageOptions.Image = ((System.Drawing.Image)(resources.GetObject("xtraTabPage2.ImageOptions.Image")));
+ this.xtraTabPage2.Name = "xtraTabPage2";
+ this.xtraTabPage2.ShowCloseButton = DevExpress.Utils.DefaultBoolean.True;
+ this.xtraTabPage2.Size = new System.Drawing.Size(804, 695);
+ this.xtraTabPage2.Text = "鐢ㄦ埛绠$悊";
+ //
+ // xtraTabPage3
+ //
+ this.xtraTabPage3.ImageOptions.Image = ((System.Drawing.Image)(resources.GetObject("xtraTabPage3.ImageOptions.Image")));
+ this.xtraTabPage3.Name = "xtraTabPage3";
+ this.xtraTabPage3.Size = new System.Drawing.Size(804, 695);
+ this.xtraTabPage3.Text = "瑙掕壊绠$悊";
+ //
+ // xtraTabPage4
+ //
+ this.xtraTabPage4.ImageOptions.Image = ((System.Drawing.Image)(resources.GetObject("xtraTabPage4.ImageOptions.Image")));
+ this.xtraTabPage4.Name = "xtraTabPage4";
+ this.xtraTabPage4.Size = new System.Drawing.Size(804, 695);
+ this.xtraTabPage4.Text = "鍔熻兘鑿滃崟";
+ //
+ // xtraTabPage5
+ //
+ this.xtraTabPage5.ImageOptions.Image = ((System.Drawing.Image)(resources.GetObject("xtraTabPage5.ImageOptions.Image")));
+ this.xtraTabPage5.Name = "xtraTabPage5";
+ this.xtraTabPage5.Size = new System.Drawing.Size(804, 695);
+ this.xtraTabPage5.Text = "鍏徃淇℃伅";
+ //
+ // fluentDesignFormControl1
+ //
+ this.fluentDesignFormControl1.FluentDesignForm = this;
+ this.fluentDesignFormControl1.Items.AddRange(new DevExpress.XtraBars.BarItem[] {
+ this.barButtonItem1,
+ this.barCheckItem1,
+ this.barButtonItem2,
+ this.barButtonItem3,
+ this.barSubItem1,
+ this.barButtonItem4,
+ this.barSubItem2,
+ this.barAbout,
+ this.barUs,
+ this.barHelp,
+ this.barButtonItem7,
+ this.barHeaderItem1,
+ this.barLargeButtonItem1,
+ this.barMdiChildrenListItem1,
+ this.barButtonItem8,
+ this.barLinkContainerItem1,
+ this.barDockingMenuItem1,
+ this.barListItem1,
+ this.barListItem2,
+ this.barMy,
+ this.barSubItem3,
+ this.barToggleSwitchItem1,
+ this.barToolbarsListItem1,
+ this.barMdiChildrenListItem2,
+ this.barExit,
+ this.barPwd,
+ this.barListItem3,
+ this.barHeaderItem2,
+ this.barListItem4,
+ this.barButtonItem5});
+ this.fluentDesignFormControl1.Location = new System.Drawing.Point(0, 0);
+ this.fluentDesignFormControl1.Manager = this.fluentFormDefaultManager1;
+ this.fluentDesignFormControl1.Name = "fluentDesignFormControl1";
+ this.fluentDesignFormControl1.Size = new System.Drawing.Size(1014, 39);
+ this.fluentDesignFormControl1.TabIndex = 2;
+ this.fluentDesignFormControl1.TabStop = false;
+ this.fluentDesignFormControl1.TitleItemLinks.Add(this.barAbout);
+ this.fluentDesignFormControl1.TitleItemLinks.Add(this.barMy);
+ this.fluentDesignFormControl1.TitleItemLinks.Add(this.barButtonItem5);
+ this.fluentDesignFormControl1.TitleItemLinks.Add(this.barListItem3);
+ this.fluentDesignFormControl1.TitleItemLinks.Add(this.barHeaderItem2);
+ this.fluentDesignFormControl1.TitleItemLinks.Add(this.barListItem4);
+ //
+ // barButtonItem1
+ //
+ this.barButtonItem1.Alignment = DevExpress.XtraBars.BarItemLinkAlignment.Right;
+ this.barButtonItem1.Caption = "barButtonItem1";
+ this.barButtonItem1.Id = 0;
+ this.barButtonItem1.Name = "barButtonItem1";
+ //
+ // barCheckItem1
+ //
+ this.barCheckItem1.Alignment = DevExpress.XtraBars.BarItemLinkAlignment.Right;
+ this.barCheckItem1.Caption = "barCheckItem1";
+ this.barCheckItem1.Id = 1;
+ this.barCheckItem1.Name = "barCheckItem1";
+ //
+ // barButtonItem2
+ //
+ this.barButtonItem2.Caption = "barButtonItem2";
+ this.barButtonItem2.Id = 2;
+ this.barButtonItem2.Name = "barButtonItem2";
+ //
+ // barButtonItem3
+ //
+ this.barButtonItem3.Alignment = DevExpress.XtraBars.BarItemLinkAlignment.Right;
+ this.barButtonItem3.Caption = "barButtonItem3";
+ this.barButtonItem3.Id = 3;
+ this.barButtonItem3.Name = "barButtonItem3";
+ //
+ // barSubItem1
+ //
+ this.barSubItem1.Alignment = DevExpress.XtraBars.BarItemLinkAlignment.Right;
+ this.barSubItem1.Caption = "barSubItem1";
+ this.barSubItem1.Id = 4;
+ this.barSubItem1.Name = "barSubItem1";
+ //
+ // barButtonItem4
+ //
+ this.barButtonItem4.Alignment = DevExpress.XtraBars.BarItemLinkAlignment.Right;
+ this.barButtonItem4.Caption = "鎴戠殑";
+ this.barButtonItem4.Id = 5;
+ this.barButtonItem4.ImageOptions.Image = ((System.Drawing.Image)(resources.GetObject("barButtonItem4.ImageOptions.Image")));
+ this.barButtonItem4.ImageOptions.LargeImage = ((System.Drawing.Image)(resources.GetObject("barButtonItem4.ImageOptions.LargeImage")));
+ this.barButtonItem4.Name = "barButtonItem4";
+ this.barButtonItem4.PaintStyle = DevExpress.XtraBars.BarItemPaintStyle.CaptionGlyph;
+ //
+ // barSubItem2
+ //
+ this.barSubItem2.Alignment = DevExpress.XtraBars.BarItemLinkAlignment.Right;
+ this.barSubItem2.Caption = "鏇村";
+ this.barSubItem2.Id = 6;
+ this.barSubItem2.ImageOptions.SvgImage = ((DevExpress.Utils.Svg.SvgImage)(resources.GetObject("barSubItem2.ImageOptions.SvgImage")));
+ this.barSubItem2.Name = "barSubItem2";
+ //
+ // barAbout
+ //
+ this.barAbout.Alignment = DevExpress.XtraBars.BarItemLinkAlignment.Right;
+ this.barAbout.Caption = "鍦ㄧ嚎甯姪";
+ this.barAbout.Id = 7;
+ this.barAbout.ImageOptions.Image = ((System.Drawing.Image)(resources.GetObject("barAbout.ImageOptions.Image")));
+ this.barAbout.ImageOptions.LargeImage = ((System.Drawing.Image)(resources.GetObject("barAbout.ImageOptions.LargeImage")));
+ this.barAbout.LinksPersistInfo.AddRange(new DevExpress.XtraBars.LinkPersistInfo[] {
+ new DevExpress.XtraBars.LinkPersistInfo(this.barUs),
+ new DevExpress.XtraBars.LinkPersistInfo(this.barHelp)});
+ this.barAbout.Name = "barAbout";
+ this.barAbout.PaintStyle = DevExpress.XtraBars.BarItemPaintStyle.CaptionGlyph;
+ //
+ // barUs
+ //
+ this.barUs.Caption = "鍏充簬绋嬪簭";
+ this.barUs.Id = 8;
+ this.barUs.Name = "barUs";
+ //
+ // barHelp
+ //
+ this.barHelp.Caption = "鍦ㄧ嚎甯姪";
+ this.barHelp.Id = 9;
+ this.barHelp.Name = "barHelp";
+ //
+ // barButtonItem7
+ //
+ this.barButtonItem7.Caption = "barButtonItem7";
+ this.barButtonItem7.Id = 10;
+ this.barButtonItem7.Name = "barButtonItem7";
+ //
+ // barHeaderItem1
+ //
+ this.barHeaderItem1.Caption = "Hi,闄嗗伐锛�";
+ this.barHeaderItem1.Id = 11;
+ this.barHeaderItem1.Name = "barHeaderItem1";
+ //
+ // barLargeButtonItem1
+ //
+ this.barLargeButtonItem1.Caption = "barLargeButtonItem1";
+ this.barLargeButtonItem1.Id = 12;
+ this.barLargeButtonItem1.Name = "barLargeButtonItem1";
+ //
+ // barMdiChildrenListItem1
+ //
+ this.barMdiChildrenListItem1.Caption = "barMdiChildrenListItem1";
+ this.barMdiChildrenListItem1.Id = 13;
+ this.barMdiChildrenListItem1.Name = "barMdiChildrenListItem1";
+ //
+ // barButtonItem8
+ //
+ this.barButtonItem8.Caption = "barButtonItem8";
+ this.barButtonItem8.Id = 14;
+ this.barButtonItem8.Name = "barButtonItem8";
+ //
+ // barLinkContainerItem1
+ //
+ this.barLinkContainerItem1.Caption = "barLinkContainerItem1";
+ this.barLinkContainerItem1.Id = 15;
+ this.barLinkContainerItem1.Name = "barLinkContainerItem1";
+ //
+ // barDockingMenuItem1
+ //
+ this.barDockingMenuItem1.Caption = "barDockingMenuItem1";
+ this.barDockingMenuItem1.Id = 16;
+ this.barDockingMenuItem1.Name = "barDockingMenuItem1";
+ //
+ // barListItem1
+ //
+ this.barListItem1.Caption = "barListItem1";
+ this.barListItem1.Id = 17;
+ this.barListItem1.Name = "barListItem1";
+ //
+ // barListItem2
+ //
+ this.barListItem2.Caption = "浣犲綋鍓嶅叡鏈�0鏉℃秷鎭湭澶勭悊";
+ this.barListItem2.Id = 18;
+ this.barListItem2.Name = "barListItem2";
+ //
+ // barMy
+ //
+ this.barMy.Alignment = DevExpress.XtraBars.BarItemLinkAlignment.Right;
+ this.barMy.Caption = "鎴戠殑";
+ this.barMy.Id = 20;
+ this.barMy.ImageOptions.Image = ((System.Drawing.Image)(resources.GetObject("barMy.ImageOptions.Image")));
+ this.barMy.ImageOptions.LargeImage = ((System.Drawing.Image)(resources.GetObject("barMy.ImageOptions.LargeImage")));
+ this.barMy.LinksPersistInfo.AddRange(new DevExpress.XtraBars.LinkPersistInfo[] {
+ new DevExpress.XtraBars.LinkPersistInfo(this.barExit),
+ new DevExpress.XtraBars.LinkPersistInfo(this.barPwd)});
+ this.barMy.Name = "barMy";
+ this.barMy.PaintStyle = DevExpress.XtraBars.BarItemPaintStyle.CaptionGlyph;
+ //
+ // barExit
+ //
+ this.barExit.Caption = "閫�鍑虹郴缁�";
+ this.barExit.Id = 25;
+ this.barExit.Name = "barExit";
+ //
+ // barPwd
+ //
+ this.barPwd.Caption = "淇敼瀵嗙爜";
+ this.barPwd.Id = 26;
+ this.barPwd.Name = "barPwd";
+ //
+ // barSubItem3
+ //
+ this.barSubItem3.Alignment = DevExpress.XtraBars.BarItemLinkAlignment.Right;
+ this.barSubItem3.Caption = "barSubItem3";
+ this.barSubItem3.Id = 21;
+ this.barSubItem3.Name = "barSubItem3";
+ //
+ // barToggleSwitchItem1
+ //
+ this.barToggleSwitchItem1.Alignment = DevExpress.XtraBars.BarItemLinkAlignment.Right;
+ this.barToggleSwitchItem1.Caption = "barToggleSwitchItem1";
+ this.barToggleSwitchItem1.Id = 22;
+ this.barToggleSwitchItem1.Name = "barToggleSwitchItem1";
+ //
+ // barToolbarsListItem1
+ //
+ this.barToolbarsListItem1.Alignment = DevExpress.XtraBars.BarItemLinkAlignment.Right;
+ this.barToolbarsListItem1.Caption = "barToolbarsListItem1";
+ this.barToolbarsListItem1.Id = 23;
+ this.barToolbarsListItem1.Name = "barToolbarsListItem1";
+ //
+ // barMdiChildrenListItem2
+ //
+ this.barMdiChildrenListItem2.Alignment = DevExpress.XtraBars.BarItemLinkAlignment.Right;
+ this.barMdiChildrenListItem2.Caption = "barMdiChildrenListItem2";
+ this.barMdiChildrenListItem2.Id = 24;
+ this.barMdiChildrenListItem2.Name = "barMdiChildrenListItem2";
+ //
+ // barListItem3
+ //
+ this.barListItem3.Caption = "娆㈣繋浣跨敤EMS绯荤粺锛屼綘褰撳墠鍏辨湁";
+ this.barListItem3.Id = 28;
+ this.barListItem3.Name = "barListItem3";
+ //
+ // barHeaderItem2
+ //
+ this.barHeaderItem2.Caption = "10鏉�";
+ this.barHeaderItem2.Id = 29;
+ this.barHeaderItem2.Name = "barHeaderItem2";
+ //
+ // barListItem4
+ //
+ this.barListItem4.Caption = "淇℃伅鏈鐞�";
+ this.barListItem4.Id = 30;
+ this.barListItem4.Name = "barListItem4";
+ //
+ // barButtonItem5
+ //
+ this.barButtonItem5.Caption = "barButtonItem5";
+ this.barButtonItem5.Id = 31;
+ this.barButtonItem5.ImageOptions.Image = ((System.Drawing.Image)(resources.GetObject("barButtonItem5.ImageOptions.Image")));
+ this.barButtonItem5.ImageOptions.LargeImage = ((System.Drawing.Image)(resources.GetObject("barButtonItem5.ImageOptions.LargeImage")));
+ this.barButtonItem5.Name = "barButtonItem5";
+ //
+ // fluentFormDefaultManager1
+ //
+ this.fluentFormDefaultManager1.DockingEnabled = false;
+ this.fluentFormDefaultManager1.Form = this;
+ this.fluentFormDefaultManager1.Items.AddRange(new DevExpress.XtraBars.BarItem[] {
+ this.barButtonItem1,
+ this.barCheckItem1,
+ this.barButtonItem2,
+ this.barButtonItem3,
+ this.barSubItem1,
+ this.barButtonItem4,
+ this.barSubItem2,
+ this.barAbout,
+ this.barUs,
+ this.barHelp,
+ this.barButtonItem7,
+ this.barHeaderItem1,
+ this.barLargeButtonItem1,
+ this.barMdiChildrenListItem1,
+ this.barButtonItem8,
+ this.barLinkContainerItem1,
+ this.barDockingMenuItem1,
+ this.barListItem1,
+ this.barListItem2,
+ this.barMy,
+ this.barSubItem3,
+ this.barToggleSwitchItem1,
+ this.barToolbarsListItem1,
+ this.barMdiChildrenListItem2,
+ this.barExit,
+ this.barPwd,
+ this.barListItem3,
+ this.barHeaderItem2,
+ this.barListItem4,
+ this.barButtonItem5});
+ this.fluentFormDefaultManager1.MaxItemId = 32;
+ //
+ // accordionControlElement10
+ //
+ this.accordionControlElement10.Elements.AddRange(new DevExpress.XtraBars.Navigation.AccordionControlElement[] {
+ this.accordionControlElement15,
+ this.accordionControlElement16});
+ this.accordionControlElement10.ImageOptions.Image = ((System.Drawing.Image)(resources.GetObject("accordionControlElement10.ImageOptions.Image")));
+ this.accordionControlElement10.Name = "accordionControlElement10";
+ this.accordionControlElement10.Text = "浠撳簱绠$悊";
+ //
+ // accordionControlElement15
+ //
+ this.accordionControlElement15.Name = "accordionControlElement15";
+ this.accordionControlElement15.Style = DevExpress.XtraBars.Navigation.ElementStyle.Item;
+ this.accordionControlElement15.Text = "Element15";
+ //
+ // accordionControlElement16
+ //
+ this.accordionControlElement16.Name = "accordionControlElement16";
+ this.accordionControlElement16.Style = DevExpress.XtraBars.Navigation.ElementStyle.Item;
+ this.accordionControlElement16.Text = "Element16";
+ //
+ // accordionControlElement9
+ //
+ this.accordionControlElement9.Elements.AddRange(new DevExpress.XtraBars.Navigation.AccordionControlElement[] {
+ this.accordionControlElement11,
+ this.accordionControlElement12,
+ this.accordionControlElement13,
+ this.accordionControlElement14});
+ this.accordionControlElement9.ImageOptions.Image = ((System.Drawing.Image)(resources.GetObject("accordionControlElement9.ImageOptions.Image")));
+ this.accordionControlElement9.Name = "accordionControlElement9";
+ this.accordionControlElement9.Text = "缁煎悎鎶ヨ〃";
+ //
+ // accordionControlElement11
+ //
+ this.accordionControlElement11.Name = "accordionControlElement11";
+ this.accordionControlElement11.Style = DevExpress.XtraBars.Navigation.ElementStyle.Item;
+ this.accordionControlElement11.Text = "Element11";
+ //
+ // accordionControlElement12
+ //
+ this.accordionControlElement12.Name = "accordionControlElement12";
+ this.accordionControlElement12.Style = DevExpress.XtraBars.Navigation.ElementStyle.Item;
+ this.accordionControlElement12.Text = "Element12";
+ //
+ // accordionControlElement13
+ //
+ this.accordionControlElement13.Name = "accordionControlElement13";
+ this.accordionControlElement13.Style = DevExpress.XtraBars.Navigation.ElementStyle.Item;
+ this.accordionControlElement13.Text = "Element13";
+ //
+ // accordionControlElement14
+ //
+ this.accordionControlElement14.Name = "accordionControlElement14";
+ this.accordionControlElement14.Style = DevExpress.XtraBars.Navigation.ElementStyle.Item;
+ this.accordionControlElement14.Text = "Element14";
+ //
+ // accordionControlElement1
+ //
+ this.accordionControlElement1.Elements.AddRange(new DevExpress.XtraBars.Navigation.AccordionControlElement[] {
+ this.accordionControlElement3,
+ this.accordionControlElement2,
+ this.accordionControlElement4,
+ this.accordionControlElement5,
+ this.accordionControlElement7,
+ this.accordionControlElement6});
+ this.accordionControlElement1.Expanded = true;
+ this.accordionControlElement1.ImageOptions.Image = ((System.Drawing.Image)(resources.GetObject("accordionControlElement1.ImageOptions.Image")));
+ this.accordionControlElement1.Name = "accordionControlElement1";
+ this.accordionControlElement1.Text = "绯荤粺绠$悊";
+ //
+ // accordionControlElement3
+ //
+ this.accordionControlElement3.ImageOptions.Image = ((System.Drawing.Image)(resources.GetObject("accordionControlElement3.ImageOptions.Image")));
+ this.accordionControlElement3.Name = "accordionControlElement3";
+ this.accordionControlElement3.Text = "缁勭粐鏋舵瀯";
+ //
+ // accordionControlElement2
+ //
+ this.accordionControlElement2.Appearance.Normal.Font = new System.Drawing.Font("Tahoma", 12F);
+ this.accordionControlElement2.Appearance.Normal.Options.UseFont = true;
+
+ this.accordionControlElement2.Name = "accordionControlElement2";
+ this.accordionControlElement2.Style = DevExpress.XtraBars.Navigation.ElementStyle.Item;
+ this.accordionControlElement2.Text = "鐢ㄦ埛绠$悊";
+ //
+ // accordionControlElement4
+ //
+ this.accordionControlElement4.ImageOptions.Image = ((System.Drawing.Image)(resources.GetObject("accordionControlElement4.ImageOptions.Image")));
+ this.accordionControlElement4.Name = "accordionControlElement4";
+ this.accordionControlElement4.Style = DevExpress.XtraBars.Navigation.ElementStyle.Item;
+ this.accordionControlElement4.Text = "瑙掕壊绠$悊";
+ //
+ // accordionControlElement5
+ //
+
+ this.accordionControlElement5.Name = "accordionControlElement5";
+ this.accordionControlElement5.Style = DevExpress.XtraBars.Navigation.ElementStyle.Item;
+ this.accordionControlElement5.Text = "鍔熻兘鑿滃崟";
+ //
+ // accordionControlElement7
+ //
+ this.accordionControlElement7.ImageOptions.Image = ((System.Drawing.Image)(resources.GetObject("accordionControlElement7.ImageOptions.Image")));
+ this.accordionControlElement7.Name = "accordionControlElement7";
+ this.accordionControlElement7.Style = DevExpress.XtraBars.Navigation.ElementStyle.Item;
+ this.accordionControlElement7.Text = "鍏徃淇℃伅";
+ //
+ // accordionControlElement6
+ //
+ this.accordionControlElement6.ImageOptions.Image = ((System.Drawing.Image)(resources.GetObject("accordionControlElement6.ImageOptions.Image")));
+ this.accordionControlElement6.Name = "accordionControlElement6";
+ this.accordionControlElement6.Style = DevExpress.XtraBars.Navigation.ElementStyle.Item;
+ this.accordionControlElement6.Text = "鍗曟嵁缂栧彿";
+ //
+ // acrd
+ //
+ this.acrd.Dock = System.Windows.Forms.DockStyle.Left;
+ this.acrd.Elements.AddRange(new DevExpress.XtraBars.Navigation.AccordionControlElement[] {
+ this.accordionControlElement1,
+ this.accordionControlElement9,
+ this.accordionControlElement10,
+ this.accordionControlElement8,
+ this.accordionControlElement17,
+ this.accordionControlElement18});
+ this.acrd.Location = new System.Drawing.Point(0, 39);
+ this.acrd.Name = "acrd";
+ this.acrd.ScrollBarMode = DevExpress.XtraBars.Navigation.ScrollBarMode.Touch;
+ this.acrd.Size = new System.Drawing.Size(208, 727);
+ this.acrd.TabIndex = 1;
+ this.acrd.ViewType = DevExpress.XtraBars.Navigation.AccordionControlViewType.HamburgerMenu;
+ //
+ // accordionControlElement8
+ //
+ this.accordionControlElement8.ImageOptions.Image = ((System.Drawing.Image)(resources.GetObject("accordionControlElement8.ImageOptions.Image")));
+ this.accordionControlElement8.Name = "accordionControlElement8";
+ this.accordionControlElement8.Text = "鍩虹鏁版嵁绠$悊";
+ //
+ // accordionControlElement17
+ //
+ this.accordionControlElement17.ImageOptions.Image = ((System.Drawing.Image)(resources.GetObject("accordionControlElement17.ImageOptions.Image")));
+ this.accordionControlElement17.Name = "accordionControlElement17";
+ this.accordionControlElement17.Text = "宸ュ崟绠$悊";
+ //
+ // accordionControlElement18
+ //
+ this.accordionControlElement18.ImageOptions.Image = ((System.Drawing.Image)(resources.GetObject("accordionControlElement18.ImageOptions.Image")));
+ this.accordionControlElement18.Name = "accordionControlElement18";
+ this.accordionControlElement18.Text = "濮斿绠$悊";
+ //
+ // FrmMain
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 18F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(1014, 766);
+ this.ControlContainer = this.fluentDesignFormContainer1;
+ this.Controls.Add(this.fluentDesignFormContainer1);
+ this.Controls.Add(this.acrd);
+ this.Controls.Add(this.fluentDesignFormControl1);
+ this.FluentDesignFormControl = this.fluentDesignFormControl1;
+ this.Name = "FrmMain";
+ this.NavigationControl = this.acrd;
+ this.Text = "骞挎繁绉戞妧-MES";
+ this.fluentDesignFormContainer1.ResumeLayout(false);
+ this.fluentDesignFormContainer1.PerformLayout();
+ this.statusStrip1.ResumeLayout(false);
+ this.statusStrip1.PerformLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.tab)).EndInit();
+ this.tab.ResumeLayout(false);
+ ((System.ComponentModel.ISupportInitialize)(this.fluentDesignFormControl1)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.fluentFormDefaultManager1)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.acrd)).EndInit();
+ this.ResumeLayout(false);
+
+ }
+
+ #endregion
+ private DevExpress.XtraBars.FluentDesignSystem.FluentDesignFormContainer fluentDesignFormContainer1;
+ private DevExpress.XtraBars.FluentDesignSystem.FluentDesignFormControl fluentDesignFormControl1;
+ private DevExpress.XtraBars.FluentDesignSystem.FluentFormDefaultManager fluentFormDefaultManager1;
+ private DevExpress.XtraBars.BarButtonItem barButtonItem1;
+ private DevExpress.XtraBars.BarCheckItem barCheckItem1;
+ private DevExpress.XtraBars.BarButtonItem barButtonItem2;
+ private DevExpress.XtraTab.XtraTabControl tab;
+ private DevExpress.XtraTab.XtraTabPage xtraTabPage11;
+ private DevExpress.XtraTab.XtraTabPage xtraTabPage1;
+ private DevExpress.XtraTab.XtraTabPage xtraTabPage2;
+ private DevExpress.XtraTab.XtraTabPage xtraTabPage3;
+ private DevExpress.XtraTab.XtraTabPage xtraTabPage4;
+ private DevExpress.XtraTab.XtraTabPage xtraTabPage5;
+ private System.Windows.Forms.StatusStrip statusStrip1;
+ private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel1;
+ private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel2;
+ private DevExpress.XtraBars.Navigation.AccordionControl acrd;
+ private DevExpress.XtraBars.Navigation.AccordionControlElement accordionControlElement1;
+ private DevExpress.XtraBars.Navigation.AccordionControlElement accordionControlElement2;
+ private DevExpress.XtraBars.Navigation.AccordionControlElement accordionControlElement3;
+ private DevExpress.XtraBars.Navigation.AccordionControlElement accordionControlElement4;
+ private DevExpress.XtraBars.Navigation.AccordionControlElement accordionControlElement5;
+ private DevExpress.XtraBars.Navigation.AccordionControlElement accordionControlElement9;
+ private DevExpress.XtraBars.Navigation.AccordionControlElement accordionControlElement11;
+ private DevExpress.XtraBars.Navigation.AccordionControlElement accordionControlElement12;
+ private DevExpress.XtraBars.Navigation.AccordionControlElement accordionControlElement13;
+ private DevExpress.XtraBars.Navigation.AccordionControlElement accordionControlElement14;
+ private DevExpress.XtraBars.Navigation.AccordionControlElement accordionControlElement10;
+ private DevExpress.XtraBars.Navigation.AccordionControlElement accordionControlElement15;
+ private DevExpress.XtraBars.Navigation.AccordionControlElement accordionControlElement16;
+ private DevExpress.XtraBars.BarButtonItem barButtonItem3;
+ private DevExpress.XtraBars.BarSubItem barSubItem1;
+ private DevExpress.XtraBars.BarButtonItem barButtonItem4;
+ private DevExpress.XtraBars.BarSubItem barSubItem2;
+ private DevExpress.XtraBars.BarSubItem barAbout;
+ private DevExpress.XtraBars.BarButtonItem barUs;
+ private DevExpress.XtraBars.BarButtonItem barHelp;
+ private DevExpress.XtraBars.BarButtonItem barButtonItem7;
+ private DevExpress.XtraBars.BarHeaderItem barHeaderItem1;
+ private DevExpress.XtraBars.BarLargeButtonItem barLargeButtonItem1;
+ private DevExpress.XtraBars.BarMdiChildrenListItem barMdiChildrenListItem1;
+ private DevExpress.XtraBars.BarButtonItem barButtonItem8;
+ private DevExpress.XtraBars.BarLinkContainerItem barLinkContainerItem1;
+ private DevExpress.XtraBars.BarDockingMenuItem barDockingMenuItem1;
+ private DevExpress.XtraBars.BarListItem barListItem1;
+ private DevExpress.XtraBars.BarListItem barListItem2;
+ private DevExpress.XtraBars.BarSubItem barMy;
+ private DevExpress.XtraBars.BarSubItem barSubItem3;
+ private DevExpress.XtraBars.BarToggleSwitchItem barToggleSwitchItem1;
+ private DevExpress.XtraBars.BarToolbarsListItem barToolbarsListItem1;
+ private DevExpress.XtraBars.BarMdiChildrenListItem barMdiChildrenListItem2;
+ private DevExpress.XtraBars.BarButtonItem barExit;
+ private DevExpress.XtraBars.BarButtonItem barPwd;
+ private DevExpress.XtraBars.Navigation.AccordionControlElement accordionControlElement7;
+ private DevExpress.XtraBars.Navigation.AccordionControlElement accordionControlElement8;
+ private DevExpress.XtraBars.Navigation.AccordionControlElement accordionControlElement17;
+ private DevExpress.XtraBars.Navigation.AccordionControlElement accordionControlElement18;
+ private DevExpress.XtraBars.Navigation.AccordionControlElement accordionControlElement6;
+ private DevExpress.XtraBars.BarListItem barListItem3;
+ private DevExpress.XtraBars.BarHeaderItem barHeaderItem2;
+ private DevExpress.XtraBars.BarListItem barListItem4;
+ private DevExpress.XtraBars.BarButtonItem barButtonItem5;
+ }
+}
\ No newline at end of file
diff --git a/DevApp/Gs.DevApp/DevFrm/FrmMain.cs b/DevApp/Gs.DevApp/DevFrm/FrmMain.cs
new file mode 100644
index 0000000..057f359
--- /dev/null
+++ b/DevApp/Gs.DevApp/DevFrm/FrmMain.cs
@@ -0,0 +1,159 @@
+锘縰sing DevExpress.XtraBars;
+using DevExpress.XtraBars.Navigation;
+using DevExpress.XtraTab;
+using GsDxApp.Properties;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.IO;
+using System.Linq;
+using System.Reflection;
+using System.Resources;
+using System.Text;
+using System.Windows.Forms;
+using Gs.DevApp.ToolBox;
+
+namespace Gs.DevApp.DevFrm
+{
+ public partial class FrmMain : DevExpress.XtraBars.FluentDesignSystem.FluentDesignForm
+ {
+ private static Dictionary<string, XtraTabPage> TabPageDic = new Dictionary<string, XtraTabPage>();
+ //private StatusStrip statusStrip;
+ //private ToolStripStatusLabel statusLabel;
+ public FrmMain()
+ {
+ InitializeComponent();
+ getInit();
+ }
+
+ private void getInit()
+ {
+ string filePath = @"D:\GsMes\GsDXApp\GsDxApp\bin\Debug\menu.txt";
+ string _strJson = File.ReadAllText(filePath);
+ var _obj = new
+ {
+ rtnCode = 1,
+ rtnData = new { list = new[] { new { guid = "", name = "", pah= "", ico = "", list = new[] { new { guid = "", name = "", pah= "", ico = "" } } } } },
+ rtnMsg = ""
+ };
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmMain));
+ _obj = Newtonsoft.Json.JsonConvert.DeserializeAnonymousType(_strJson, _obj);
+ foreach (dynamic _dy in _obj.rtnData.list)
+ {
+ AccordionControlElement _grp = this.acrd.AddGroup();
+ _grp.ImageOptions.Image = Utility.GetImgFromResource(_dy.ico);
+ _grp.Name = Guid.NewGuid().ToString();
+ _grp.Style = DevExpress.XtraBars.Navigation.ElementStyle.Group;
+ _grp.Text = _dy.name;
+ _grp.Click += _grp_Click;
+ foreach (dynamic _dy2 in _dy.list)
+ {
+ AccordionControlElement _itm = this.acrd.AddItem();
+ _itm.Name = Guid.NewGuid().ToString();
+ _itm.ImageOptions.Image =Utility.GetImgFromResource(_dy2.ico);
+ _itm.Style = DevExpress.XtraBars.Navigation.ElementStyle.Item;
+ _itm.Text = _dy2.name;
+ _itm.Appearance.Normal.Font = new System.Drawing.Font("Tahoma", 10F);
+ _itm.Tag = _dy2.pah;
+ _itm.Click += _grp_Click;
+ _grp.Elements.Add(_itm);
+ };
+ }
+ }
+
+ private void _grp_Click(object sender, EventArgs e)
+ {
+ AccordionControlElement _acd = (AccordionControlElement)sender;
+ if (_acd.Elements.Count > 0) return;
+ string tabPageName = _acd.Name + "_page";
+ string tabText = _acd.Text;
+ //string newFormName = "GsDxApp.test.ToolbarForm1";
+ string newFormName = _acd.Tag.ToString();
+ AddTabpage(tab, tabPageName, tabText, newFormName);
+ }
+
+ /// <summary>
+ /// 鏂板閫夐」鍗¢〉
+ /// </summary>
+ /// <param name="tabControl">閫夐」鍗℃帶浠�</param>
+ /// <param name="tabPageName">褰撴湡閫夐」鍗¢〉name鍚嶇О</param>
+ /// <param name="tabText">褰撳墠閫夐」鍗¢〉Text鏍囬</param>
+ /// <param name="newFormName">褰撳墠閫夐」鍗′腑鐨勬柊绐椾綋</param>
+ public void AddTabpage(XtraTabControl tabControl, string tabPageName, string tabText, string newFormName)
+ {
+ if (IsTabpageExsit(tabControl, tabPageName))
+ {
+ return;
+ }
+ XtraTabPage newPage = new XtraTabPage();
+ newPage.Name = tabPageName;
+ newPage.Text = tabText;
+ newPage.Tooltip = (tabText + ":" + tabPageName);
+ newPage.Controls.Add(AddNewForm(newFormName));
+ tabControl.TabPages.Add(newPage);
+ TabPageDic.Add(tabPageName, newPage);
+ tabControl.SelectedTabPage = newPage;
+ }
+
+ /// <summary>
+ /// 绉婚櫎閫夐」鍗¢〉
+ /// </summary>
+ /// <param name="tabControl"></param>
+ /// <param name="tabPageName"></param>
+ /// <param name="e"></param>
+ public void RemoveTabPage(XtraTabControl tabControl, EventArgs e)
+ {
+ DevExpress.XtraTab.ViewInfo.ClosePageButtonEventArgs args = (DevExpress.XtraTab.ViewInfo.ClosePageButtonEventArgs)e;
+ string name = args.Page.Tooltip;
+ foreach (XtraTabPage item in tabControl.TabPages)
+ {
+ if (item.Name == name)
+ {
+ tabControl.TabPages.Remove(item);
+ item.Dispose();
+ TabPageDic.Remove(name);
+ return;
+ }
+ }
+ }
+
+ /// <summary>
+ /// 鍒ゆ柇閫夐」鍗℃槸鍚﹀凡缁忓瓨鍦�
+ /// </summary>
+ /// <param name="tabControl">閫夐」鍗℃帶浠�</param>
+ /// <param name="tabPageName">閫夐」鍗″悕绉�</param>
+ /// <returns></returns>
+ private bool IsTabpageExsit(XtraTabControl tabControl, string tabPageName)
+ {
+ foreach (var item in TabPageDic)
+ {
+ if (item.Key == tabPageName)
+ {
+ tabControl.SelectedTabPage = item.Value;
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /// <summary>
+ /// 鍦ㄩ�夐」鍗′腑鐢熸垚绐椾綋
+ /// </summary>
+ /// <param name="form">绐椾綋鍚嶇О</param>
+ private Form AddNewForm(string formName)
+ {
+ Form newForm = (Form)Assembly.GetExecutingAssembly().CreateInstance(formName);
+ newForm.FormBorderStyle = FormBorderStyle.None;
+ newForm.TopLevel = false;
+ //newForm.Parent = ((XtraTabControl)sender).SelectedTabPage;
+ newForm.ControlBox = false;
+ newForm.Dock = DockStyle.Fill;
+ newForm.Visible = true;
+ return newForm;
+ }
+
+
+ }
+}
diff --git a/DevApp/Gs.DevApp/DevFrm/FrmMain.resx b/DevApp/Gs.DevApp/DevFrm/FrmMain.resx
new file mode 100644
index 0000000..56f50f0
--- /dev/null
+++ b/DevApp/Gs.DevApp/DevFrm/FrmMain.resx
@@ -0,0 +1,801 @@
+锘�<?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="statusStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+ <value>284, 17</value>
+ </metadata>
+ <metadata name="statusStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+ <value>284, 17</value>
+ </metadata>
+ <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+ <data name="xtraTabPage11.ImageOptions.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACZ0RVh0VGl0
+ bGUATWVldGluZztWaWV3TWVldGluZztNZWV0aW5nVmlldztpMs/hAAABF0lEQVQ4T2NoaWn5TyoGAgYY
+ po4BMHDmzBkoC5WNDEDqfZt2MMAwigHYwNcfv//P2Hbtf3z//v/RPfvAbKBGXhQDYLbdLQxBwSBQNWc/
+ SAM6XgDEmC6AaQIBGDugZSc2A74DMXEGhHfuwWbAayAmzgvls7B6YSUQExeId559RPEGlG2E1QBc0Xj4
+ 6vP/cX37wfjQlecgA8Ca4QaAFKNjmMbECQf+P3/3DcwHgRfvv4EMeADEAXADYACmEQTuPv/0P7B1F9jZ
+ +bOO/n/29uv/J2++/M+efgQsBsQ/gVgLpwEdq8/DFOLDC8EGoGMQiAGmOiwa0PEzeKZAxkAJEL6PpBAX
+ vo3PABcgPgvEP4AYXSNI7LRv0w4rAC4a3uu4QD2IAAAAAElFTkSuQmCC
+</value>
+ </data>
+ <data name="xtraTabPage1.ImageOptions.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
+ dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAARdEVYdFRpdGxlAERlcGFydG1lbnQ7lyqdwQAAA2ZJ
+ REFUOE91km9Mk1cUh69zS+YnE/fHGQeIEdFhdZU6pFjbWjqBQoVSi7YzQLW2iC+MwguFqlQDCE4+KBZT
+ QLBoJUGMUDZxMeIG0sqsNUBiGgRaB8uymGxOZ6Yj9rdrsxG2bCd5zqd7nnN+ySUAiNeRRO6cSxR9c0Zk
+ +/qLhED3sbjApTKurSWfIzqVEx1683+EmvucRDTWWzY+PdKD509+xG8/3cKDnlxcrVg3fjxzpejfQ/MJ
+ tdu2bc6xL0vh6cxH38lEdB2Ow9VDH+ESEwmjZFkfIWQ5ZRVlBeVdytuUBXOCO62Jv8/cz8YvAS3+eKzB
+ y0dyzPQL8FXdWny+PWy2Ometq1Ef8+SkOurnIuny61kfv6OhgkWvJSGB58KnwvbSTbPui3r0VAlwkY2F
+ 7QAPxrTIV302w7PJ4St49ngIv/qPw9PChzU3cka5ZnEGFSycy2KSRfWPDFzDdH8lHnYXoJmVoImNfT7S
+ XYLhjjw4awToKNuAy6XRsOvCoI9dcoMK3iSfFdeT3YW1xCiLYZsqcuBymHG9bgdY+RoM2ra9mr5Ho/lz
+ aTQ1Xgbk+OGWALcbYlDEf/8FFbxBHvqnSRZTrd7DHHu6V50Nk2pLsFQZH9yRnA5VZtKLtmJecMiuwxVL
+ AtoKuWhleChPjpjNi39PSgWE7C6oNVQ1ODDmm0Q22wy3ZxT9Q8MQqI6iscUOQ/IGzI/mrEnDQVH4AB1d
+ EBIcONQwSq+AbzKAzLzT+O7+GL513wUvrRxN5x0wandifrRazXrohStMcrmcpKSkEMJUnsH41Peoszmx
+ z9SEXQWnkaqtwVZFCRSaPBQVMrAkRKFCxQ+alHFBdmM4dqmUT2Uymbqrq4uQvWw9fBMB6MqbUdXmgblx
+ APsrO5BrKIbVaoXP50M1ZxU8Hg8GBwfBrvwQTqcTDMNAKpUaSLruyE1ZTjm2KA8jLr0CXBkLrmQfzGYz
+ /H4/JiYmcCQ6Al6vFy6XCwVhS9Hb24vOzk5kZGSMzv2Dv6H1llAoTLdYLJiamoIzX4d20Wa0JsTCumkd
+ TnCicCJJAofDAYVC8c/hvwQL+Xx+vMlkCm1vF8fDq9NgIEuOnu1b0bqZCyO9wm63IzU19T8Fr2uxVqt1
+ U+hmHs5+wkE9ZzWOro5ASfgH0C9dArFYTBHf/BPybEZrsHkQGgAAAABJRU5ErkJggg==
+</value>
+ </data>
+ <data name="xtraTabPage2.ImageOptions.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
+ dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAASdEVYdFRpdGxlAFVzZXI7UGVyc29uO0y2ImUAAAJ+
+ SURBVDhPdZJrSFNxGMb/c7nUTDMvNc2onG4aJBKSq22OYUtXCoolZFAiXanIpc7NSYMKI3W6WmalEnZF
+ zCK7QpiyfVgSJMQktDAMCi8l1KfKfDrv8TCs1gPP//zP+/6e58s5DAAzq0J5WzIXs+PrRMy6KXLPNePW
+ /m7bjvH2vRk9pWuDVjI/oix/2DeH8a5VS5hZGZb/8oYF4302jHXvg6veAKMyfDQtWlIgFomE6Jx8BeoV
+ Et4bopj4ekXe27EeIy5kM5QnM5zMXYXmknQ0bAyEPDwgW8jy8hXMU/BtS+6vrqPrYcqMRd1uNd71OvDJ
+ fQ7VGRGQBbEmgePlr4BZ1Etfd9lK8O2DG/h4Hz+GO/BzqBkdR7SIYcwhYLz8FigCWNFzZxU3HsZnjx2T
+ rjOY7jOjoTh1JoixdAHj5beAdFif2vt95AFmvE58ddVg8GIhDLLQu8Lap/8WxASLda1l+XBdOoCeE1mo
+ 0sURlBvIHQvmfQm/BYnS2KJyc/XQZaMeD205qC+Ix660aBSX7vfqZbJCAeP1T8GhNas7b27RY/DNCF64
+ HqGxcjusO1VoddTimduDW3nbcJBjBPzPArVGU+512OHRqNFmtcIzMQ3raTtO1TkxMDmNFlMlPJkaEEPs
+ 3wWSO4+fTAxcaUF/igL2pCRolUq8n5rCKGedSoUmhYLfEUMsZXwFUqk05wt3eXW1HZ2xy/E0IQFOsRgm
+ rZY33WlGO2KIpYyvIMdgcHJP7r8/i3sRS+BOSUa/XI62kEW86U4z2hFDEjJzBXHx8drG887JmiwdKkIW
+ zlqWRc+WRUXimGC604x2xBBLGV+BIO5PZXLOifNM7/5mxHJZsN86BZo6ADxq2AAAAABJRU5ErkJggg==
+</value>
+ </data>
+ <data name="xtraTabPage3.ImageOptions.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
+ dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAALdEVYdFRpdGxlAFVzZXI7l1sKAgAAAx1JREFUOE9V
+ k3lIU3EAx9/23tvzWHmkuZybTidtTNOpU0k0zw5Ls8PMowxbupXkUZa6LI8OzYIIsiSoxKwQUTPpWhaW
+ mIRLIomCggKDovpDEkuTvv3eyth+8Pnj+/ge8H78KAD/KQsQUUYFu14vYwfzpcz3HAn9JsOD3kpRlMDW
+ Z4ud2O0nUh2MkPzoOpyNu6f16DiQjhw/57n1/g51K+XsQlvvPHaiyJc921qYjN76HJzJ1sEQ7AnTmmW/
+ NwZwSFOIGm2989iJnTK2+1LxapTq/HC50ojxe+fx8EI5slXiL6m+bL+tdx47kevN1BYonH9Pfp7Ary/P
+ MPmyBcOXDaiI9pxM8aHbbL3z2IlAJ6G8TCedmfr2CdPvruPj46N40roDpVq3SZlYsJz8zAUEMYEjCAn2
+ BeS4NWXpRl8P9uLraAte9ZTiRkUiNvk7vyiI8G42JchHauKkP0rCPQYL1C5FxC+0BmtYvpBiCPKSmMDr
+ PQ16DLcfQX/DWtSu8kOuetHbK4Uxc5Y2A6bGmjB0Lg/1qcrZDVJOzwf5w8kFwmAjzQ2f9JLAlBSGM1mh
+ aExTI1/ji6pIH/DhuTdn0Ve3Dl1VSTCfSMGaxYyZDzNqoVBb7ST+ejN1NSx7jdi3Ih5Prx1GZ20uWV+K
+ mlipdfnXeBO6KhPRURqNb7cykeAqnOYLXLYzbHt7VBQsewrxKDkOLSEaFIdpYQgJRrnCG/vCF2HifgVm
+ LSb8HNqN6YFc9FWFImoBNcAX+JQwovfmrM14kpGKuyEq9GuU6FTLcE7hibKlbnjQvBkzlmp86M4jy1tI
+ WAt9mMtskBNl5AuUVSz3c8SwEwOxkbijVaNHrcB5pQTlKneYT2WS5WrcP56CjCUsEl2F0Imp5xpHqphk
+ RdaCSsbBWnAvPAi3Q1XoUClwQOMBc3MmZsZMMB9LwTYvBo1eLDIowSzJRBD4WxPwBR4baPZiNcPhIM1h
+ P2GXgIExyJUsH7Iup7vSyCIPkieSElwlGclUbzylcuTjf5s8CRpC+D8S8pXOyJRxiHWnB2kBlUy+RRNC
+ CRICy4dVjhT1B3hg45dPadMbAAAAAElFTkSuQmCC
+</value>
+ </data>
+ <data name="xtraTabPage4.ImageOptions.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAB10RVh0VGl0
+ bGUATGlzdDtMZXZlbDtNdWx0aTtOdW1iZXJW2eikAAACRUlEQVQ4T42TyU9aURSHzx8giggyCIIiMyKK
+ EpqaCq01osbSwWUXTbrssv9EbcW4q0PnNnaITZetiQFhT5p2x7JJ05UKMgv09Jwr8qBxIcnH4d33ft89
+ 794LICKzRsQa9WzsQvDX2p+9vdSXARP9xFi9/jdaq9XiTLVabcLXfA/+/3Dos8mIO0ajENRq9fjNuw/R
+ O7lE3EHP5G30XL6F9rFZZIltbAasozNg8V5vCkT7O/39QkCzPOIZK5WTNniM71k8V2GIGQ41BaKLTwa9
+ EHzU6+ED09cnGL4UAXfgBpg9ITAPB8HsDsKgawoGnFfaBGeL2EpkW6sDV2ARXP5FcPoXwDkxT8yBwzcH
+ dt+sJHiv03GN/t7dTW1rtfgzGk3X6/V4uVzZLxRLbZRK5X1ai1WDNSAJKCQEhJj9rVqD/N7hpQfomJhH
+ x3gYHb4w0qyot/iRxX3mcUnwTq3hGvuxspJ+o1Ijwx3wbPl8IdFKkbqgDpa1plFJQAEheE1Brq+UKlEb
+ rNlo22y0bdaRadCavKAxEv0jkuClslcIvj9+kn6hUCHD188VSlGnI/cpfA0sHuZ0C3sNbklAAa4RfriV
+ X1+/pfjwcOuZ7LHgKJNNMrlcPkFnY1UInsmVRI9gq6sHNrsUoqPNTgXyyocW7uGQO4h0BnDQPYVm1xQq
+ dXYsFIr7QrBFAQ5RADZk3bDR2S0EGzK5OL7Z41zi8DCTPOPg4CjJ3ZycVJeFQISIdZkc1jtOYcHTDjkV
+ 8TriufM4d7DBBf7iCP8Ak8pcwM8CzykAAAAASUVORK5CYII=
+</value>
+ </data>
+ <data name="xtraTabPage5.ImageOptions.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAADx0RVh0VGl0
+ bGUASW4gTGluZTtMaW5lO0FsaWduO1RleHQ7SW1hZ2U7TGF5b3V0O1NoYXBlO0NlbnRlcjtXcmFwz9xE
+ 2QAAAmtJREFUOE9dkulPE0EYxjeamHgAlhKNf5zxg1hJSDAYOVogBCJylJYiCCaEIKDIR46IEQ1QQIMB
+ OYwfDB5RgwoFere0220fn3e2LuIkv51Ndt7fM/vOaAC0/vGtuYfj7yHw3eTpFvrGNhUPhCfCBnofb8A3
+ tLKoadoZqVWCPi7+f+QEPnJ8HM85ZEn38DtWame5xBT00Cqjh6L7whhhYjfxCfzeJYxswDBy8AyuiuC8
+ JRCjJAZCCQSCSZPDBPbI7oEQx29FArqRRcfAykmB59Gq2qYkeEfX4Rkhw2RoHZ1Da3DnaRtcQzqTxb3+
+ NyK4YAk6Bt4qQfwog3jSJJY0FNG4gUgig7BCR0rPorlnSQQFlqCVRmlQLKkjxkVRCgLDV/C99zK2W0oQ
+ iusIklBMx1E6iwavXwSFlqC5d1l1N8LCv2nfvJfwsdGOzUobDmNpHEbT2I+kuUsDTvecCIosQaPPrwSh
+ eEalSNqHejtWy21YvlaI/bBZHAinuMsMqtpfnhS4aDSyOQRZLEkqjUUBRQp7QiiFXRLhL1a2zIrgoiWo
+ an2lBA2+ZdR3LaGOs+Diu9O7iFri9HD2+FU/Kpqei8BmCW7ffYEML8jXXxF8+Ul2worPOxESxqcfYWzn
+ CUZ1lDc8E0GxJbjVNIMMz7eGKTVuP6o7iXsBVR2kfQF32udN2uZxwF6UuaZFYLcE5Y0z0CmQeyBHGOUp
+ yL9KU4M8gSB7csDkffZC+uKonTy5A4drYrasfho366bhqJuCwzWF0top3HBOmtRM4joprZ5QXK0YfU3B
+ 8U3kOEXOkSJiy1Ocx/4PJfm5gJwGoP0BoGnqG2WwFi0AAAAASUVORK5CYII=
+</value>
+ </data>
+ <data name="accordionControlElement3.ImageOptions.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
+ dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAARdEVYdFRpdGxlAERlcGFydG1lbnQ7lyqdwQAAA2ZJ
+ REFUOE91km9Mk1cUh69zS+YnE/fHGQeIEdFhdZU6pFjbWjqBQoVSi7YzQLW2iC+MwguFqlQDCE4+KBZT
+ QLBoJUGMUDZxMeIG0sqsNUBiGgRaB8uymGxOZ6Yj9rdrsxG2bCd5zqd7nnN+ySUAiNeRRO6cSxR9c0Zk
+ +/qLhED3sbjApTKurSWfIzqVEx1683+EmvucRDTWWzY+PdKD509+xG8/3cKDnlxcrVg3fjxzpejfQ/MJ
+ tdu2bc6xL0vh6cxH38lEdB2Ow9VDH+ESEwmjZFkfIWQ5ZRVlBeVdytuUBXOCO62Jv8/cz8YvAS3+eKzB
+ y0dyzPQL8FXdWny+PWy2Ometq1Ef8+SkOurnIuny61kfv6OhgkWvJSGB58KnwvbSTbPui3r0VAlwkY2F
+ 7QAPxrTIV302w7PJ4St49ngIv/qPw9PChzU3cka5ZnEGFSycy2KSRfWPDFzDdH8lHnYXoJmVoImNfT7S
+ XYLhjjw4awToKNuAy6XRsOvCoI9dcoMK3iSfFdeT3YW1xCiLYZsqcuBymHG9bgdY+RoM2ra9mr5Ho/lz
+ aTQ1Xgbk+OGWALcbYlDEf/8FFbxBHvqnSRZTrd7DHHu6V50Nk2pLsFQZH9yRnA5VZtKLtmJecMiuwxVL
+ AtoKuWhleChPjpjNi39PSgWE7C6oNVQ1ODDmm0Q22wy3ZxT9Q8MQqI6iscUOQ/IGzI/mrEnDQVH4AB1d
+ EBIcONQwSq+AbzKAzLzT+O7+GL513wUvrRxN5x0wandifrRazXrohStMcrmcpKSkEMJUnsH41Peoszmx
+ z9SEXQWnkaqtwVZFCRSaPBQVMrAkRKFCxQ+alHFBdmM4dqmUT2Uymbqrq4uQvWw9fBMB6MqbUdXmgblx
+ APsrO5BrKIbVaoXP50M1ZxU8Hg8GBwfBrvwQTqcTDMNAKpUaSLruyE1ZTjm2KA8jLr0CXBkLrmQfzGYz
+ /H4/JiYmcCQ6Al6vFy6XCwVhS9Hb24vOzk5kZGSMzv2Dv6H1llAoTLdYLJiamoIzX4d20Wa0JsTCumkd
+ TnCicCJJAofDAYVC8c/hvwQL+Xx+vMlkCm1vF8fDq9NgIEuOnu1b0bqZCyO9wm63IzU19T8Fr2uxVqt1
+ U+hmHs5+wkE9ZzWOro5ASfgH0C9dArFYTBHf/BPybEZrsHkQGgAAAABJRU5ErkJggg==
+</value>
+ </data>
+ <data name="accordionControlElement4.ImageOptions.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
+ dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAALdEVYdFRpdGxlAFVzZXI7l1sKAgAAAx1JREFUOE9V
+ k3lIU3EAx9/23tvzWHmkuZybTidtTNOpU0k0zw5Ls8PMowxbupXkUZa6LI8OzYIIsiSoxKwQUTPpWhaW
+ mIRLIomCggKDovpDEkuTvv3eyth+8Pnj+/ge8H78KAD/KQsQUUYFu14vYwfzpcz3HAn9JsOD3kpRlMDW
+ Z4ud2O0nUh2MkPzoOpyNu6f16DiQjhw/57n1/g51K+XsQlvvPHaiyJc921qYjN76HJzJ1sEQ7AnTmmW/
+ NwZwSFOIGm2989iJnTK2+1LxapTq/HC50ojxe+fx8EI5slXiL6m+bL+tdx47kevN1BYonH9Pfp7Ary/P
+ MPmyBcOXDaiI9pxM8aHbbL3z2IlAJ6G8TCedmfr2CdPvruPj46N40roDpVq3SZlYsJz8zAUEMYEjCAn2
+ BeS4NWXpRl8P9uLraAte9ZTiRkUiNvk7vyiI8G42JchHauKkP0rCPQYL1C5FxC+0BmtYvpBiCPKSmMDr
+ PQ16DLcfQX/DWtSu8kOuetHbK4Uxc5Y2A6bGmjB0Lg/1qcrZDVJOzwf5w8kFwmAjzQ2f9JLAlBSGM1mh
+ aExTI1/ji6pIH/DhuTdn0Ve3Dl1VSTCfSMGaxYyZDzNqoVBb7ST+ejN1NSx7jdi3Ih5Prx1GZ20uWV+K
+ mlipdfnXeBO6KhPRURqNb7cykeAqnOYLXLYzbHt7VBQsewrxKDkOLSEaFIdpYQgJRrnCG/vCF2HifgVm
+ LSb8HNqN6YFc9FWFImoBNcAX+JQwovfmrM14kpGKuyEq9GuU6FTLcE7hibKlbnjQvBkzlmp86M4jy1tI
+ WAt9mMtskBNl5AuUVSz3c8SwEwOxkbijVaNHrcB5pQTlKneYT2WS5WrcP56CjCUsEl2F0Imp5xpHqphk
+ RdaCSsbBWnAvPAi3Q1XoUClwQOMBc3MmZsZMMB9LwTYvBo1eLDIowSzJRBD4WxPwBR4baPZiNcPhIM1h
+ P2GXgIExyJUsH7Iup7vSyCIPkieSElwlGclUbzylcuTjf5s8CRpC+D8S8pXOyJRxiHWnB2kBlUy+RRNC
+ CRICy4dVjhT1B3hg45dPadMbAAAAAElFTkSuQmCC
+</value>
+ </data>
+ <data name="accordionControlElement7.ImageOptions.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
+ dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAOdEVYdFRpdGxlAENvbnRhY3Q7EcdpAQAAAoFJREFU
+ OE+lk1tIk2EYx4dUdi7NDlcS0vnkRRd1EV2WZGGSpBZEi7Lm8rDmygamyCipqemyEelSZrPQorRlHoaH
+ kC6KsCDwKujCDrPp1Lnv27fpv+d5t6QLL4oGP/bxwf/3PM/7vJ8KwH8x58t/4fcviphHLCCiiUXEEmIp
+ sZxYScQQq4jVxJrIO86ooozWrl6j1YXCmm4Y7nRCX9WB/Mp25JlfQnvzBTRlrcgyPcPZ0qdQlzzBqaJm
+ pOXff0/ZWBbM53BoekYQZEIzCASnISshSIEQpuQQfFIQk/4gxqcUjPkCyCxs4v7jWbCw8G63CA9/HoK9
+ KAPXDsejzaKj8DT8f4b9Crw+EkwqSDc4WJDAgsUGS6eo6nJUw6I9gFun96LkaAL8keqW5jeoaBpAmb0f
+ pXU98EzISNM3smADC5YV0Mws6Gu5h0r1bvRWZaDLqofPHxDVJ7g6V6bWPRMB/CRBqs7Ogk0sWKGraJ+d
+ +8ugCx1V2fg00A6fzK0ruF7fh+JaF4zWThRUOzEyLiMlr4EFW1gQm2t2QqFwz+sPsD104e3HYdgaXejq
+ HRSHFp47XHnEK8M9JuFITj0LtrEgjlclk+B8Tjn2H9TDVN0v/s9dNIvw1ZpXuHTbidzyNrhJ8J0EydoH
+ LNjBgrWaG62QaGVZJEjcc2YWFvCJi7mpbbdXorCMb6MSDmXXsWAXC9ZlmZ6LlU3RzOFDU8L7pvBo5NC4
+ 9R9UmcNfPRKSNEKwkwUxJwy179TF4Rt20vgYmVce4fhlB47RqlLz7UjJbRAzJ2ttVNmGpAt12JduGqKs
+ uEh8n+OI9QTvdSOxmeAT3kpsJ3hWrsYtJ0aeORw95xf290D1Cy/MeLbWSgQFAAAAAElFTkSuQmCC
+</value>
+ </data>
+ <data name="accordionControlElement6.ImageOptions.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
+ dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAZdEVYdFRpdGxlAFRhYmxlO0Zvcm1hdDtDbGVhcjsa
+ l9UaAAAC70lEQVQ4T32Ta0hTYRjHj5aZN0rpQ/ohCikiCcJIMutL4SWpvqwvQpJaauI1SwxMIec93aZr
+ LhXdvJe2mJfZJurcJs47ZmZe+lBhTI3NuWZLv/x736OJkPTC75znPc/z/OA857wMWfsIDv/hwC7ofj/B
+ DgBDYWIEak1smRaxpVrECLSI5mtwn9ePe8VqRBEin/eBW9oNrkCJbL4SWcUdGiraEdBi1fwqlPMmllLF
+ /Ha89YzXOQeLdROW9S2eFnWSLubgjuBuQS9bWD+xjPrxJaRUj5F4iY0pyVWjMJltMJp/s6L0XDkVOO0I
+ wrgqFMtnkVQxisTKESRWjCDh5TASxMOI36aqSY+OnmnMfl6Bsn+GCpx3BJxMBbrmTKgdN6B2bAlxIj0b
+ 15G4dsyAGOEg1qwb6Ncv4JusBTPxEWi75l9IJOwwmVvp7eiaNUJKiqkgumyQbaR7SlHrB1h/bWBQKMZi
+ eQFsQ+/wkZuOZn/fPCJwYEJTZXj2agpR/IFd6BDJ0yG/ZQrSVh0WGuvwRZANq+o1fnZKsa5qxnhuJoQ+
+ pwuY2LQGmC0b+GGyYYUgkurY+6plk7y7GroSPhbyM7Aml2CtRQwzYX1Cg/ccDmQB/mCiHtaS4g0sbwuE
+ Ei1MZG9dt6GvtQufMh/B2CiCUcKDsaYElqEejAaFQHEpAIXe3jwm7IFIG55Yg/CEGtxJqEaOQAGZYgJZ
+ 4l5kv5mGvr0by8IcrLzIgVnbheGrwZD5XkCGp5eQzMCFwF7cCR7bHA9NllY/aZhE5aABogED1E1ymFRy
+ 6K8EocnnHOLdPcpJnSvBnv2WuyHLKTj1Lfia7yhRL7I0ThqQlFQNycmziHBxrSA1brQ5zMGR2UvgeOxy
+ moCT2Ya87q+QjCzCN7IZZ25X4LyXbxXJH6LNAxeDmBt25BzuIbAnuHn6pQh9OGKculmKE4HFOOr3mDYf
+ pvnrdvZMMPmHAgn/CNx94v5KnAh0NkcIdDbOBPsQkqKNW9gxfwBLDEo6BCio3AAAAABJRU5ErkJggg==
+</value>
+ </data>
+ <data name="accordionControlElement1.ImageOptions.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>
+ 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
+</value>
+ </data>
+ <data name="accordionControlElement9.ImageOptions.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>
+ 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
+ AABJRU5ErkJggg==
+</value>
+ </data>
+ <data name="accordionControlElement10.ImageOptions.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>
+ 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
+</value>
+ </data>
+ <data name="accordionControlElement8.ImageOptions.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>
+ 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
+ gbjDA968SgAAAABJRU5ErkJggg==
+</value>
+ </data>
+ <data name="accordionControlElement17.ImageOptions.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>
+ 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
+</value>
+ </data>
+ <data name="accordionControlElement18.ImageOptions.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>
+ 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
+</value>
+ </data>
+ <data name="barButtonItem4.ImageOptions.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
+ dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAASdEVYdFRpdGxlAFVzZXI7UGVyc29uO0y2ImUAAAJ+
+ SURBVDhPdZJrSFNxGMb/c7nUTDMvNc2onG4aJBKSq22OYUtXCoolZFAiXanIpc7NSYMKI3W6WmalEnZF
+ zCK7QpiyfVgSJMQktDAMCi8l1KfKfDrv8TCs1gPP//zP+/6e58s5DAAzq0J5WzIXs+PrRMy6KXLPNePW
+ /m7bjvH2vRk9pWuDVjI/oix/2DeH8a5VS5hZGZb/8oYF4302jHXvg6veAKMyfDQtWlIgFomE6Jx8BeoV
+ Et4bopj4ekXe27EeIy5kM5QnM5zMXYXmknQ0bAyEPDwgW8jy8hXMU/BtS+6vrqPrYcqMRd1uNd71OvDJ
+ fQ7VGRGQBbEmgePlr4BZ1Etfd9lK8O2DG/h4Hz+GO/BzqBkdR7SIYcwhYLz8FigCWNFzZxU3HsZnjx2T
+ rjOY7jOjoTh1JoixdAHj5beAdFif2vt95AFmvE58ddVg8GIhDLLQu8Lap/8WxASLda1l+XBdOoCeE1mo
+ 0sURlBvIHQvmfQm/BYnS2KJyc/XQZaMeD205qC+Ix660aBSX7vfqZbJCAeP1T8GhNas7b27RY/DNCF64
+ HqGxcjusO1VoddTimduDW3nbcJBjBPzPArVGU+512OHRqNFmtcIzMQ3raTtO1TkxMDmNFlMlPJkaEEPs
+ 3wWSO4+fTAxcaUF/igL2pCRolUq8n5rCKGedSoUmhYLfEUMsZXwFUqk05wt3eXW1HZ2xy/E0IQFOsRgm
+ rZY33WlGO2KIpYyvIMdgcHJP7r8/i3sRS+BOSUa/XI62kEW86U4z2hFDEjJzBXHx8drG887JmiwdKkIW
+ zlqWRc+WRUXimGC604x2xBBLGV+BIO5PZXLOifNM7/5mxHJZsN86BZo6ADxq2AAAAABJRU5ErkJggg==
+</value>
+ </data>
+ <data name="barButtonItem4.ImageOptions.LargeImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>
+ 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
+</value>
+ </data>
+ <assembly alias="DevExpress.Data.v19.2" name="DevExpress.Data.v19.2, Version=19.2.8.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
+ <data name="barSubItem2.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v19.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>
+ AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjE5LjIsIFZlcnNpb249MTkuMi44
+ LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+ dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAKIDAAAC77u/
+ PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
+ IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+ MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
+ Y2U9InByZXNlcnZlIiBpZD0iQ2xlYXJUYWJsZVN0eWxlIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6
+ bmV3IDAgMCAzMiAzMiI+DQogIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CgkuQmx1ZXtmaWxsOiMxMTc3
+ RDc7fQoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9CgkuUmVke2ZpbGw6I0QxMUMxQzt9Cgkuc3Qwe29wYWNp
+ dHk6MC41O30KPC9zdHlsZT4NCiAgPGcgY2xhc3M9InN0MCI+DQogICAgPHBhdGggZD0iTTI4LDEwaC04
+ VjRoOFYxMHogTTI0LjYsMTQuOWMwLjYtMC42LDEuNC0wLjksMi4yLTAuOWMwLjQsMCwwLjgsMC4xLDEu
+ MiwwLjJWMTJoLTh2NmgxLjVMMjQuNiwxNC45eiBNMCwyNiAgIGg4di02SDBWMjZ6IE0xNC45LDI0LjZs
+ My4xLTMuMVYyMGgtOHY2aDQuMUMxNC4zLDI1LjUsMTQuNSwyNSwxNC45LDI0LjZ6IiBjbGFzcz0iQmxh
+ Y2siIC8+DQogIDwvZz4NCiAgPHBhdGggZD0iTTAsNGg4djZIMFY0eiBNMCwxOGg4di02SDBWMTh6IE0x
+ MCwxMGg4VjRoLThWMTB6IE0xMCwxOGg4di02aC04VjE4eiBNMTksMjMuM0wxNi4zLDI2ICBjLTAuNCww
+ LjQtMC40LDEuMiwwLDEuNmw0LDRjMC40LDAuNCwxLjIsMC40LDEuNiwwbDIuNy0yLjdMMTksMjMuM3oi
+ IGNsYXNzPSJCbHVlIiAvPg0KICA8cGF0aCBkPSJNMzEuNywyMC40bC00LTRjLTAuNC0wLjQtMS4yLTAu
+ NC0xLjYsMGwtNi4xLDYuMWw1LjYsNS42bDYuMS02LjFDMzIuMSwyMS41LDMyLjEsMjAuOCwzMS43LDIw
+ LjR6IiBjbGFzcz0iUmVkIiAvPg0KPC9zdmc+Cw==
+</value>
+ </data>
+ <data name="barAbout.ImageOptions.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
+ dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAOdEVYdFRpdGxlAERldGFpbHM7NJb/TAAAAxBJREFU
+ OE9VkXlIk3Ecxl+bOadzzZzHDt3cZrrpNI95L102zUqXbUqXpGJmRdldYHSY5VGWGWgWFl3KKkzICAr/
+ 8KA/ah1kohl2G4kGSdFl9PR7X1tsL3zgfXif53l/3++PAvAfQxCPSpFxjUkSTnesL/tLpNfM56E81nKK
+ opzsffY4iFQpNyQ9iP99rX4ONmaoUaCTY+5sl98qD+eDcg6LZ++14SCS/d0aVsZJUThPAb2MiygBG0Xz
+ wv4Ec1hQuDhV23ttOIh4Iad9VYIUmZpAVG0vxYPbTehq2oYEgeu4lEV12nttOIgob5cD8UK3P5/H3mNq
+ /D4m+xtx73wpdsR5TwawqAv2XhsOwos9I8A0V/zz66eP+DbShtGeSvQ2F2BrlOfkLCcq2t5rw1FQlOfB
+ XK11qLsDE9ZGPGsvw+XtqciRuz8l35IIKkIgQUBgE5yY4CWzkLxTzoSA3Zmqto7KYvRd3AdLeQaKktUI
+ 1uSMSRPLx+T62t+S2J1vfcLWtPJEifOJ340O0g87ROCiqTUI7rUXq7E/S4uj5nByAxEIjV8HtakTYaut
+ KDk2imBzF2Rpp+EdWtDHFcbr6LCzVuwa2WKSTFjr8vDm2k7sWZqGTrL99MxiJhxZ8g6FNR/IYYHCw8NQ
+ mHogSqoBX248QxfMKk/xutS914DXlm0YasiCZX0cinUahCTvgibfivCiEajzB5iw0twLWfZdiPUt8FTm
+ DdIFkpOLfV73NxXiRfNyPDuSgCcVsbi6SQWlvhaaomEm3Ng+fQI67L+oE6IFFvCDcn/RBcpzOX4/Rlq3
+ YPB4OvqrE/H4UAw6tqoQkbKZmTl4xUMozH1Mgf+imxClX4dP4gl4yLL6pwuyfZmCgWodnlYl4FGFFnd2
+ q2FauIRZGD3zKctLpqD+yiD89JfhqSmDu2RBHV0g2KDln72wTIiWpUKcNQrRZPRDfaYPylICERltZBYm
+ IjOLDRby53omzPXPuMXxjdPQBfT9exNCCdH/iCHEEnRsXmAJL8Bwg69Y9oqvzJvykC4edBen1U+HKdZf
+ 4c3590llwYcAAAAASUVORK5CYII=
+</value>
+ </data>
+ <data name="barAbout.ImageOptions.LargeImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>
+ 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
+</value>
+ </data>
+ <data name="barMy.ImageOptions.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
+ dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAASdEVYdFRpdGxlAFVzZXI7UGVyc29uO0y2ImUAAAJ+
+ SURBVDhPdZJrSFNxGMb/c7nUTDMvNc2onG4aJBKSq22OYUtXCoolZFAiXanIpc7NSYMKI3W6WmalEnZF
+ zCK7QpiyfVgSJMQktDAMCi8l1KfKfDrv8TCs1gPP//zP+/6e58s5DAAzq0J5WzIXs+PrRMy6KXLPNePW
+ /m7bjvH2vRk9pWuDVjI/oix/2DeH8a5VS5hZGZb/8oYF4302jHXvg6veAKMyfDQtWlIgFomE6Jx8BeoV
+ Et4bopj4ekXe27EeIy5kM5QnM5zMXYXmknQ0bAyEPDwgW8jy8hXMU/BtS+6vrqPrYcqMRd1uNd71OvDJ
+ fQ7VGRGQBbEmgePlr4BZ1Etfd9lK8O2DG/h4Hz+GO/BzqBkdR7SIYcwhYLz8FigCWNFzZxU3HsZnjx2T
+ rjOY7jOjoTh1JoixdAHj5beAdFif2vt95AFmvE58ddVg8GIhDLLQu8Lap/8WxASLda1l+XBdOoCeE1mo
+ 0sURlBvIHQvmfQm/BYnS2KJyc/XQZaMeD205qC+Ix660aBSX7vfqZbJCAeP1T8GhNas7b27RY/DNCF64
+ HqGxcjusO1VoddTimduDW3nbcJBjBPzPArVGU+512OHRqNFmtcIzMQ3raTtO1TkxMDmNFlMlPJkaEEPs
+ 3wWSO4+fTAxcaUF/igL2pCRolUq8n5rCKGedSoUmhYLfEUMsZXwFUqk05wt3eXW1HZ2xy/E0IQFOsRgm
+ rZY33WlGO2KIpYyvIMdgcHJP7r8/i3sRS+BOSUa/XI62kEW86U4z2hFDEjJzBXHx8drG887JmiwdKkIW
+ zlqWRc+WRUXimGC604x2xBBLGV+BIO5PZXLOifNM7/5mxHJZsN86BZo6ADxq2AAAAABJRU5ErkJggg==
+</value>
+ </data>
+ <data name="barMy.ImageOptions.LargeImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>
+ 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
+</value>
+ </data>
+ <data name="barButtonItem5.ImageOptions.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAABR0RVh0VGl0
+ bGUASW1hZ2U7SW1nO1NlbmSUgA8GAAACl0lEQVQ4T32QWU9TURRGG3wQHBPhtkCQMFR+j++mwIsMVhKM
+ GJApFYc4BI1RKoVSRZljQymIBVGomJgiSlQwBkQolUDowKV0uJ383OfSNhDRk6zc4Zxv7X22RKVS/UVf
+ Xp6+V56HHrkc3bk56MrORkdWFjoyM/E04ySeZGTgcXo6dGlp+n0FLBwIhqBLTYVfCGK0oBBefxCtUg4v
+ FfnY2hbAuwU8SknBvoIe+SkIQhg6WSp8/hC8viC2vSTgODHcQkEN8R9BLlUOoY0ELKyVSuH2BijIgSdB
+ LKxOSYaEVkKUAzG6c3LEym0yGTwU1FJlt4dV5rDp9osCB+9DczIJNF2W8ba+aWh7GR/wcXYVnTQ0n1hZ
+ Rq0HdlqnO7Pg0BkFnJt+2F0+qJmg5rYJtjUekchvCIEwwuEIzMVFYpjRyknRwu3cOUYztc6qNyWf0Euu
+ P5yAcWwWL17PIRSK0PQjoigG+2bymVkrJi3zeDu1xO59MDYvydUHE3QvAaaJ72jUjNHQAmLbDqcP2x56
+ p7tXNDyDptOMBesmahtfMUFiXKC6Pw4n78eijcfz4S+42NCH5V9OsLW4vIF8ZRPU7WZ8+2HH4soWqm6N
+ MkFSXFB/9w1NVMC7aRtGzAtYtrlwpbEfpwvvobyuHVMzSxgYmcMk7c9beVy6YWKCQ3FB9Z0xzC3Y0Tv4
+ GVueoNjNzxUnPn21EVbqxiX+Z/vvZ1ZxoWGYCQ7HBZU3R6HtscBFQbsrimPXexS2r+22oKx+iAmOxgUV
+ 10zYcHqxTkNbd3ix5tj7jEP77Fxp9cBegaKsY/x83RCUdYNQ1g7iHFFaY6SDRpTQ4ZLLBhRXGVBUacDZ
+ yn4UlHeZ9wyRViJxhDj2D47vgn0nEQk7ApXkDxuzc6jTlOltAAAAAElFTkSuQmCC
+</value>
+ </data>
+ <data name="barButtonItem5.ImageOptions.LargeImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>
+ 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
+ I+mqZChHAAAAAElFTkSuQmCC
+</value>
+ </data>
+ <metadata name="fluentFormDefaultManager1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+ <value>17, 17</value>
+ </metadata>
+</root>
\ No newline at end of file
diff --git a/DevApp/Gs.DevApp/DevFrm/User/Organization.Designer.cs b/DevApp/Gs.DevApp/DevFrm/User/Organization.Designer.cs
new file mode 100644
index 0000000..7d49ded
--- /dev/null
+++ b/DevApp/Gs.DevApp/DevFrm/User/Organization.Designer.cs
@@ -0,0 +1,253 @@
+锘�
+namespace Gs.DevApp.DevFrm.User
+{
+ partial class Organization
+ {
+ /// <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()
+ {
+ System.Windows.Forms.TreeNode treeNode1 = new System.Windows.Forms.TreeNode("鍒嗗叕鍙�1");
+ System.Windows.Forms.TreeNode treeNode2 = new System.Windows.Forms.TreeNode("鍒嗗叕鍙�2");
+ System.Windows.Forms.TreeNode treeNode3 = new System.Windows.Forms.TreeNode("鍒嗗叕鍙�3");
+ System.Windows.Forms.TreeNode treeNode4 = new System.Windows.Forms.TreeNode("鍒嗗叕鍙�4");
+ System.Windows.Forms.TreeNode treeNode5 = new System.Windows.Forms.TreeNode("鏌愭煇鏈夐檺鍏徃", new System.Windows.Forms.TreeNode[] {
+ treeNode1,
+ treeNode2,
+ treeNode3,
+ treeNode4});
+ this.toolBarMenu1 = new Gs.DevApp.UserControl.ToolBarMenu();
+ this.tabControl1 = new System.Windows.Forms.TabControl();
+ this.tabPage1 = new System.Windows.Forms.TabPage();
+ this.groupBox1 = new System.Windows.Forms.GroupBox();
+ this.panel1 = new System.Windows.Forms.Panel();
+ this.textEdit4 = new DevExpress.XtraEditors.TextEdit();
+ this.labelControl4 = new DevExpress.XtraEditors.LabelControl();
+ this.textEdit3 = new DevExpress.XtraEditors.TextEdit();
+ this.labelControl3 = new DevExpress.XtraEditors.LabelControl();
+ this.textEdit2 = new DevExpress.XtraEditors.TextEdit();
+ this.labelControl2 = new DevExpress.XtraEditors.LabelControl();
+ this.textEdit1 = new DevExpress.XtraEditors.TextEdit();
+ this.labelControl1 = new DevExpress.XtraEditors.LabelControl();
+ this.treeView1 = new System.Windows.Forms.TreeView();
+ this.tabPage2 = new System.Windows.Forms.TabPage();
+ this.tabControl1.SuspendLayout();
+ this.tabPage1.SuspendLayout();
+ this.groupBox1.SuspendLayout();
+ this.panel1.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.textEdit4.Properties)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.textEdit3.Properties)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.textEdit2.Properties)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.textEdit1.Properties)).BeginInit();
+ this.SuspendLayout();
+ //
+ // toolBarMenu1
+ //
+ this.toolBarMenu1.Dock = System.Windows.Forms.DockStyle.Top;
+ this.toolBarMenu1.Location = new System.Drawing.Point(0, 0);
+ this.toolBarMenu1.Name = "toolBarMenu1";
+ this.toolBarMenu1.Size = new System.Drawing.Size(917, 80);
+ this.toolBarMenu1.TabIndex = 0;
+ //
+ // tabControl1
+ //
+ this.tabControl1.Controls.Add(this.tabPage1);
+ this.tabControl1.Controls.Add(this.tabPage2);
+ this.tabControl1.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.tabControl1.Location = new System.Drawing.Point(0, 80);
+ this.tabControl1.Name = "tabControl1";
+ this.tabControl1.SelectedIndex = 0;
+ this.tabControl1.Size = new System.Drawing.Size(917, 564);
+ this.tabControl1.TabIndex = 2;
+ //
+ // tabPage1
+ //
+ this.tabPage1.Controls.Add(this.groupBox1);
+ this.tabPage1.Controls.Add(this.treeView1);
+ this.tabPage1.Location = new System.Drawing.Point(4, 27);
+ this.tabPage1.Name = "tabPage1";
+ this.tabPage1.Padding = new System.Windows.Forms.Padding(3);
+ this.tabPage1.Size = new System.Drawing.Size(909, 533);
+ this.tabPage1.TabIndex = 0;
+ this.tabPage1.Text = "鏁版嵁鍒楄〃";
+ this.tabPage1.UseVisualStyleBackColor = true;
+ //
+ // groupBox1
+ //
+ this.groupBox1.Controls.Add(this.panel1);
+ this.groupBox1.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.groupBox1.Location = new System.Drawing.Point(210, 3);
+ this.groupBox1.Name = "groupBox1";
+ this.groupBox1.Size = new System.Drawing.Size(696, 527);
+ this.groupBox1.TabIndex = 2;
+ this.groupBox1.TabStop = false;
+ this.groupBox1.Text = "鍩烘湰淇℃伅";
+ //
+ // panel1
+ //
+ this.panel1.Controls.Add(this.textEdit4);
+ this.panel1.Controls.Add(this.labelControl4);
+ this.panel1.Controls.Add(this.textEdit3);
+ this.panel1.Controls.Add(this.labelControl3);
+ this.panel1.Controls.Add(this.textEdit2);
+ this.panel1.Controls.Add(this.labelControl2);
+ this.panel1.Controls.Add(this.textEdit1);
+ this.panel1.Controls.Add(this.labelControl1);
+ this.panel1.Location = new System.Drawing.Point(28, 25);
+ this.panel1.Name = "panel1";
+ this.panel1.Size = new System.Drawing.Size(462, 307);
+ this.panel1.TabIndex = 0;
+ //
+ // textEdit4
+ //
+ this.textEdit4.Location = new System.Drawing.Point(133, 168);
+ this.textEdit4.Name = "textEdit4";
+ this.textEdit4.Size = new System.Drawing.Size(125, 24);
+ this.textEdit4.TabIndex = 7;
+ //
+ // labelControl4
+ //
+ this.labelControl4.Location = new System.Drawing.Point(26, 174);
+ this.labelControl4.Name = "labelControl4";
+ this.labelControl4.Size = new System.Drawing.Size(90, 18);
+ this.labelControl4.TabIndex = 6;
+ this.labelControl4.Text = "璐熻矗浜虹數璇濓細";
+ //
+ // textEdit3
+ //
+ this.textEdit3.Location = new System.Drawing.Point(133, 119);
+ this.textEdit3.Name = "textEdit3";
+ this.textEdit3.Size = new System.Drawing.Size(125, 24);
+ this.textEdit3.TabIndex = 5;
+ //
+ // labelControl3
+ //
+ this.labelControl3.Location = new System.Drawing.Point(26, 125);
+ this.labelControl3.Name = "labelControl3";
+ this.labelControl3.Size = new System.Drawing.Size(90, 18);
+ this.labelControl3.TabIndex = 4;
+ this.labelControl3.Text = "缁勭粐璐熻矗浜猴細";
+ //
+ // textEdit2
+ //
+ this.textEdit2.Location = new System.Drawing.Point(133, 74);
+ this.textEdit2.Name = "textEdit2";
+ this.textEdit2.Size = new System.Drawing.Size(125, 24);
+ this.textEdit2.TabIndex = 3;
+ //
+ // labelControl2
+ //
+ this.labelControl2.Location = new System.Drawing.Point(41, 80);
+ this.labelControl2.Name = "labelControl2";
+ this.labelControl2.Size = new System.Drawing.Size(75, 18);
+ this.labelControl2.TabIndex = 2;
+ this.labelControl2.Text = "缁勭粐鍚嶇О锛�";
+ //
+ // textEdit1
+ //
+ this.textEdit1.Location = new System.Drawing.Point(133, 26);
+ this.textEdit1.Name = "textEdit1";
+ this.textEdit1.Size = new System.Drawing.Size(125, 24);
+ this.textEdit1.TabIndex = 1;
+ //
+ // labelControl1
+ //
+ this.labelControl1.Location = new System.Drawing.Point(41, 32);
+ this.labelControl1.Name = "labelControl1";
+ this.labelControl1.Size = new System.Drawing.Size(75, 18);
+ this.labelControl1.TabIndex = 0;
+ this.labelControl1.Text = "缁勭粐缂栧彿锛�";
+ //
+ // treeView1
+ //
+ this.treeView1.Dock = System.Windows.Forms.DockStyle.Left;
+ this.treeView1.Location = new System.Drawing.Point(3, 3);
+ this.treeView1.Name = "treeView1";
+ treeNode1.Name = "鑺傜偣1";
+ treeNode1.Text = "鍒嗗叕鍙�1";
+ treeNode2.Name = "鑺傜偣2";
+ treeNode2.Text = "鍒嗗叕鍙�2";
+ treeNode3.Name = "鑺傜偣3";
+ treeNode3.Text = "鍒嗗叕鍙�3";
+ treeNode4.Name = "鑺傜偣4";
+ treeNode4.Text = "鍒嗗叕鍙�4";
+ treeNode5.Name = "鑺傜偣0";
+ treeNode5.Text = "鏌愭煇鏈夐檺鍏徃";
+ this.treeView1.Nodes.AddRange(new System.Windows.Forms.TreeNode[] {
+ treeNode5});
+ this.treeView1.Size = new System.Drawing.Size(207, 527);
+ this.treeView1.TabIndex = 1;
+ //
+ // tabPage2
+ //
+ this.tabPage2.Location = new System.Drawing.Point(4, 27);
+ this.tabPage2.Name = "tabPage2";
+ this.tabPage2.Padding = new System.Windows.Forms.Padding(3);
+ this.tabPage2.Size = new System.Drawing.Size(990, 436);
+ this.tabPage2.TabIndex = 1;
+ this.tabPage2.Text = "鏁版嵁缂栬緫";
+ this.tabPage2.UseVisualStyleBackColor = true;
+ //
+ // Organization
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 18F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(917, 644);
+ this.Controls.Add(this.tabControl1);
+ this.Controls.Add(this.toolBarMenu1);
+ this.Name = "Organization";
+ this.Text = "Organization";
+ this.tabControl1.ResumeLayout(false);
+ this.tabPage1.ResumeLayout(false);
+ this.groupBox1.ResumeLayout(false);
+ this.panel1.ResumeLayout(false);
+ this.panel1.PerformLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.textEdit4.Properties)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.textEdit3.Properties)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.textEdit2.Properties)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.textEdit1.Properties)).EndInit();
+ this.ResumeLayout(false);
+
+ }
+
+ #endregion
+
+ private UserControl.ToolBarMenu toolBarMenu1;
+ private System.Windows.Forms.TabControl tabControl1;
+ private System.Windows.Forms.TabPage tabPage1;
+ private System.Windows.Forms.GroupBox groupBox1;
+ private System.Windows.Forms.Panel panel1;
+ private DevExpress.XtraEditors.TextEdit textEdit4;
+ private DevExpress.XtraEditors.LabelControl labelControl4;
+ private DevExpress.XtraEditors.TextEdit textEdit3;
+ private DevExpress.XtraEditors.LabelControl labelControl3;
+ private DevExpress.XtraEditors.TextEdit textEdit2;
+ private DevExpress.XtraEditors.LabelControl labelControl2;
+ private DevExpress.XtraEditors.TextEdit textEdit1;
+ private DevExpress.XtraEditors.LabelControl labelControl1;
+ private System.Windows.Forms.TreeView treeView1;
+ private System.Windows.Forms.TabPage tabPage2;
+ }
+}
\ No newline at end of file
diff --git a/DevApp/Gs.DevApp/DevFrm/User/Organization.cs b/DevApp/Gs.DevApp/DevFrm/User/Organization.cs
new file mode 100644
index 0000000..00f11c5
--- /dev/null
+++ b/DevApp/Gs.DevApp/DevFrm/User/Organization.cs
@@ -0,0 +1,25 @@
+锘縰sing 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 Gs.DevApp.DevFrm.User
+{
+ public partial class Organization : DevExpress.XtraEditors.XtraForm
+ {
+ public Organization()
+ {
+ InitializeComponent();
+ ImageList imageList = new ImageList();
+ imageList.Images.Add("icon1", Properties.Resources.usergroup_32x32);
+ imageList.Images.Add("icon2", Properties.Resources.user_16x16);
+ treeView1.ImageList = imageList;
+ }
+ }
+}
\ No newline at end of file
diff --git a/DevApp/Gs.DevApp/DevFrm/User/Organization.resx b/DevApp/Gs.DevApp/DevFrm/User/Organization.resx
new file mode 100644
index 0000000..1af7de1
--- /dev/null
+++ b/DevApp/Gs.DevApp/DevFrm/User/Organization.resx
@@ -0,0 +1,120 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<root>
+ <!--
+ Microsoft ResX Schema
+
+ Version 2.0
+
+ The primary goals of this format is to allow a simple XML format
+ that is mostly human readable. The generation and parsing of the
+ various data types are done through the TypeConverter classes
+ associated with the data types.
+
+ Example:
+
+ ... ado.net/XML headers & schema ...
+ <resheader name="resmimetype">text/microsoft-resx</resheader>
+ <resheader name="version">2.0</resheader>
+ <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+ <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+ <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+ <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+ <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+ <value>[base64 mime encoded serialized .NET Framework object]</value>
+ </data>
+ <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+ <comment>This is a comment</comment>
+ </data>
+
+ There are any number of "resheader" rows that contain simple
+ name/value pairs.
+
+ Each data row contains a name, and value. The row also contains a
+ type or mimetype. Type corresponds to a .NET class that support
+ text/value conversion through the TypeConverter architecture.
+ Classes that don't support this are serialized and stored with the
+ mimetype set.
+
+ The mimetype is used for serialized objects, and tells the
+ ResXResourceReader how to depersist the object. This is currently not
+ extensible. For a given mimetype the value must be set accordingly:
+
+ Note - application/x-microsoft.net.object.binary.base64 is the format
+ that the ResXResourceWriter will generate, however the reader can
+ read any of the formats listed below.
+
+ mimetype: application/x-microsoft.net.object.binary.base64
+ value : The object must be serialized with
+ : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+ : and then encoded with base64 encoding.
+
+ mimetype: application/x-microsoft.net.object.soap.base64
+ value : The object must be serialized with
+ : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+ : and then encoded with base64 encoding.
+
+ mimetype: application/x-microsoft.net.object.bytearray.base64
+ value : The object must be serialized into a byte array
+ : using a System.ComponentModel.TypeConverter
+ : and then encoded with base64 encoding.
+ -->
+ <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+ <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+ <xsd:element name="root" msdata:IsDataSet="true">
+ <xsd:complexType>
+ <xsd:choice maxOccurs="unbounded">
+ <xsd:element name="metadata">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" />
+ </xsd:sequence>
+ <xsd:attribute name="name" use="required" type="xsd:string" />
+ <xsd:attribute name="type" type="xsd:string" />
+ <xsd:attribute name="mimetype" type="xsd:string" />
+ <xsd:attribute ref="xml:space" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="assembly">
+ <xsd:complexType>
+ <xsd:attribute name="alias" type="xsd:string" />
+ <xsd:attribute name="name" type="xsd:string" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="data">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+ <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+ <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+ <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+ <xsd:attribute ref="xml:space" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="resheader">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required" />
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:choice>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:schema>
+ <resheader name="resmimetype">
+ <value>text/microsoft-resx</value>
+ </resheader>
+ <resheader name="version">
+ <value>2.0</value>
+ </resheader>
+ <resheader name="reader">
+ <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </resheader>
+ <resheader name="writer">
+ <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </resheader>
+</root>
\ No newline at end of file
diff --git a/DevApp/Gs.DevApp/DevFrm/User/SysMenu.Designer.cs b/DevApp/Gs.DevApp/DevFrm/User/SysMenu.Designer.cs
new file mode 100644
index 0000000..cc91b2a
--- /dev/null
+++ b/DevApp/Gs.DevApp/DevFrm/User/SysMenu.Designer.cs
@@ -0,0 +1,208 @@
+锘�
+namespace Gs.DevApp.DevFrm.User
+{
+ partial class SysMenu
+ {
+ /// <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()
+ {
+ this.toolBarMenu1 = new Gs.DevApp.UserControl.ToolBarMenu();
+ this.tabControl1 = new System.Windows.Forms.TabControl();
+ this.tabPage1 = new System.Windows.Forms.TabPage();
+ this.tlMenu = new DevExpress.XtraTreeList.TreeList();
+ this.tlcModuleID = new DevExpress.XtraTreeList.Columns.TreeListColumn();
+ this.tlcMenuName = new DevExpress.XtraTreeList.Columns.TreeListColumn();
+ this.tlcParentMenuName = new DevExpress.XtraTreeList.Columns.TreeListColumn();
+ this.tlcMenuCaption = new DevExpress.XtraTreeList.Columns.TreeListColumn();
+ this.tlcActions = new DevExpress.XtraTreeList.Columns.TreeListColumn();
+ this.tlcMenuType = new DevExpress.XtraTreeList.Columns.TreeListColumn();
+ this.tabControl1.SuspendLayout();
+ this.tabPage1.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.tlMenu)).BeginInit();
+ this.SuspendLayout();
+ //
+ // toolBarMenu1
+ //
+ this.toolBarMenu1.Dock = System.Windows.Forms.DockStyle.Top;
+ this.toolBarMenu1.Location = new System.Drawing.Point(0, 0);
+ this.toolBarMenu1.Name = "toolBarMenu1";
+ this.toolBarMenu1.Size = new System.Drawing.Size(769, 91);
+ this.toolBarMenu1.TabIndex = 0;
+ //
+ // tabControl1
+ //
+ this.tabControl1.Controls.Add(this.tabPage1);
+ this.tabControl1.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.tabControl1.Location = new System.Drawing.Point(0, 91);
+ this.tabControl1.Name = "tabControl1";
+ this.tabControl1.SelectedIndex = 0;
+ this.tabControl1.Size = new System.Drawing.Size(769, 332);
+ this.tabControl1.TabIndex = 4;
+ //
+ // tabPage1
+ //
+ this.tabPage1.Controls.Add(this.tlMenu);
+ this.tabPage1.Location = new System.Drawing.Point(4, 27);
+ this.tabPage1.Name = "tabPage1";
+ this.tabPage1.Padding = new System.Windows.Forms.Padding(3);
+ this.tabPage1.Size = new System.Drawing.Size(761, 301);
+ this.tabPage1.TabIndex = 0;
+ this.tabPage1.Text = "鏁版嵁鍒楄〃";
+ this.tabPage1.UseVisualStyleBackColor = true;
+ //
+ // tlMenu
+ //
+ this.tlMenu.Columns.AddRange(new DevExpress.XtraTreeList.Columns.TreeListColumn[] {
+ this.tlcModuleID,
+ this.tlcMenuName,
+ this.tlcParentMenuName,
+ this.tlcMenuCaption,
+ this.tlcActions,
+ this.tlcMenuType});
+ this.tlMenu.Cursor = System.Windows.Forms.Cursors.Default;
+ this.tlMenu.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.tlMenu.Location = new System.Drawing.Point(3, 3);
+ this.tlMenu.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+ this.tlMenu.MinWidth = 23;
+ this.tlMenu.Name = "tlMenu";
+ this.tlMenu.BeginUnboundLoad();
+ this.tlMenu.AppendNode(new object[] {
+ "5",
+ "1",
+ "5",
+ "2",
+ "5",
+ "5"}, -1);
+ this.tlMenu.AppendNode(new object[] {
+ "5",
+ "3",
+ "5",
+ "4",
+ "5",
+ "5"}, -1);
+ this.tlMenu.AppendNode(new object[] {
+ "5",
+ "4",
+ "5",
+ "5",
+ "5",
+ "5"}, -1);
+ this.tlMenu.EndUnboundLoad();
+ this.tlMenu.OptionsBehavior.Editable = false;
+ this.tlMenu.Size = new System.Drawing.Size(755, 295);
+ this.tlMenu.TabIndex = 2;
+ this.tlMenu.TreeLevelWidth = 21;
+ //
+ // tlcModuleID
+ //
+ this.tlcModuleID.Caption = "妯″潡缂栧彿";
+ this.tlcModuleID.FieldName = "ModuleID";
+ this.tlcModuleID.MinWidth = 23;
+ this.tlcModuleID.Name = "tlcModuleID";
+ this.tlcModuleID.Visible = true;
+ this.tlcModuleID.VisibleIndex = 5;
+ this.tlcModuleID.Width = 74;
+ //
+ // tlcMenuName
+ //
+ this.tlcMenuName.Caption = "鑿滃崟鍚嶇О";
+ this.tlcMenuName.FieldName = "MenuName";
+ this.tlcMenuName.MinWidth = 38;
+ this.tlcMenuName.Name = "tlcMenuName";
+ this.tlcMenuName.Visible = true;
+ this.tlcMenuName.VisibleIndex = 0;
+ this.tlcMenuName.Width = 219;
+ //
+ // tlcParentMenuName
+ //
+ this.tlcParentMenuName.Caption = "鐖剁骇";
+ this.tlcParentMenuName.FieldName = "ParentMenuName";
+ this.tlcParentMenuName.MinWidth = 23;
+ this.tlcParentMenuName.Name = "tlcParentMenuName";
+ this.tlcParentMenuName.Visible = true;
+ this.tlcParentMenuName.VisibleIndex = 4;
+ this.tlcParentMenuName.Width = 96;
+ //
+ // tlcMenuCaption
+ //
+ this.tlcMenuCaption.Caption = "鑿滃崟鏍囬";
+ this.tlcMenuCaption.FieldName = "MenuCaption";
+ this.tlcMenuCaption.MinWidth = 23;
+ this.tlcMenuCaption.Name = "tlcMenuCaption";
+ this.tlcMenuCaption.Visible = true;
+ this.tlcMenuCaption.VisibleIndex = 2;
+ this.tlcMenuCaption.Width = 96;
+ //
+ // tlcActions
+ //
+ this.tlcActions.Caption = "鏉冮檺";
+ this.tlcActions.FieldName = "Actions";
+ this.tlcActions.MinWidth = 23;
+ this.tlcActions.Name = "tlcActions";
+ this.tlcActions.Visible = true;
+ this.tlcActions.VisibleIndex = 3;
+ this.tlcActions.Width = 96;
+ //
+ // tlcMenuType
+ //
+ this.tlcMenuType.Caption = "绫诲瀷";
+ this.tlcMenuType.FieldName = "MenuType";
+ this.tlcMenuType.MinWidth = 23;
+ this.tlcMenuType.Name = "tlcMenuType";
+ this.tlcMenuType.Visible = true;
+ this.tlcMenuType.VisibleIndex = 1;
+ this.tlcMenuType.Width = 95;
+ //
+ // SysMenu
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 18F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(769, 423);
+ this.Controls.Add(this.tabControl1);
+ this.Controls.Add(this.toolBarMenu1);
+ this.Name = "SysMenu";
+ this.Text = "SysMenu";
+ this.tabControl1.ResumeLayout(false);
+ this.tabPage1.ResumeLayout(false);
+ ((System.ComponentModel.ISupportInitialize)(this.tlMenu)).EndInit();
+ this.ResumeLayout(false);
+
+ }
+
+ #endregion
+
+ private UserControl.ToolBarMenu toolBarMenu1;
+ private System.Windows.Forms.TabControl tabControl1;
+ private System.Windows.Forms.TabPage tabPage1;
+ private DevExpress.XtraTreeList.TreeList tlMenu;
+ private DevExpress.XtraTreeList.Columns.TreeListColumn tlcModuleID;
+ private DevExpress.XtraTreeList.Columns.TreeListColumn tlcMenuName;
+ private DevExpress.XtraTreeList.Columns.TreeListColumn tlcParentMenuName;
+ private DevExpress.XtraTreeList.Columns.TreeListColumn tlcMenuCaption;
+ private DevExpress.XtraTreeList.Columns.TreeListColumn tlcActions;
+ private DevExpress.XtraTreeList.Columns.TreeListColumn tlcMenuType;
+ }
+}
\ No newline at end of file
diff --git a/DevApp/Gs.DevApp/DevFrm/User/SysMenu.cs b/DevApp/Gs.DevApp/DevFrm/User/SysMenu.cs
new file mode 100644
index 0000000..c8ed5ff
--- /dev/null
+++ b/DevApp/Gs.DevApp/DevFrm/User/SysMenu.cs
@@ -0,0 +1,27 @@
+锘縰sing 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 Gs.DevApp.DevFrm.User
+{
+ public partial class SysMenu : DevExpress.XtraEditors.XtraForm
+ {
+ public SysMenu()
+ {
+ InitializeComponent();
+ this.toolBarMenu1.btnAddClick += ToolBarMenu1_btnAddClick;
+ }
+ private void ToolBarMenu1_btnAddClick(object sender, EventArgs e)
+ {
+ SysMenuAdd frm = new SysMenuAdd();
+ frm.ShowDialog();
+ }
+ }
+}
\ No newline at end of file
diff --git a/DevApp/Gs.DevApp/DevFrm/User/SysMenu.resx b/DevApp/Gs.DevApp/DevFrm/User/SysMenu.resx
new file mode 100644
index 0000000..1af7de1
--- /dev/null
+++ b/DevApp/Gs.DevApp/DevFrm/User/SysMenu.resx
@@ -0,0 +1,120 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<root>
+ <!--
+ Microsoft ResX Schema
+
+ Version 2.0
+
+ The primary goals of this format is to allow a simple XML format
+ that is mostly human readable. The generation and parsing of the
+ various data types are done through the TypeConverter classes
+ associated with the data types.
+
+ Example:
+
+ ... ado.net/XML headers & schema ...
+ <resheader name="resmimetype">text/microsoft-resx</resheader>
+ <resheader name="version">2.0</resheader>
+ <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+ <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+ <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+ <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+ <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+ <value>[base64 mime encoded serialized .NET Framework object]</value>
+ </data>
+ <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+ <comment>This is a comment</comment>
+ </data>
+
+ There are any number of "resheader" rows that contain simple
+ name/value pairs.
+
+ Each data row contains a name, and value. The row also contains a
+ type or mimetype. Type corresponds to a .NET class that support
+ text/value conversion through the TypeConverter architecture.
+ Classes that don't support this are serialized and stored with the
+ mimetype set.
+
+ The mimetype is used for serialized objects, and tells the
+ ResXResourceReader how to depersist the object. This is currently not
+ extensible. For a given mimetype the value must be set accordingly:
+
+ Note - application/x-microsoft.net.object.binary.base64 is the format
+ that the ResXResourceWriter will generate, however the reader can
+ read any of the formats listed below.
+
+ mimetype: application/x-microsoft.net.object.binary.base64
+ value : The object must be serialized with
+ : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+ : and then encoded with base64 encoding.
+
+ mimetype: application/x-microsoft.net.object.soap.base64
+ value : The object must be serialized with
+ : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+ : and then encoded with base64 encoding.
+
+ mimetype: application/x-microsoft.net.object.bytearray.base64
+ value : The object must be serialized into a byte array
+ : using a System.ComponentModel.TypeConverter
+ : and then encoded with base64 encoding.
+ -->
+ <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+ <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+ <xsd:element name="root" msdata:IsDataSet="true">
+ <xsd:complexType>
+ <xsd:choice maxOccurs="unbounded">
+ <xsd:element name="metadata">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" />
+ </xsd:sequence>
+ <xsd:attribute name="name" use="required" type="xsd:string" />
+ <xsd:attribute name="type" type="xsd:string" />
+ <xsd:attribute name="mimetype" type="xsd:string" />
+ <xsd:attribute ref="xml:space" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="assembly">
+ <xsd:complexType>
+ <xsd:attribute name="alias" type="xsd:string" />
+ <xsd:attribute name="name" type="xsd:string" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="data">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+ <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+ <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+ <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+ <xsd:attribute ref="xml:space" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="resheader">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required" />
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:choice>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:schema>
+ <resheader name="resmimetype">
+ <value>text/microsoft-resx</value>
+ </resheader>
+ <resheader name="version">
+ <value>2.0</value>
+ </resheader>
+ <resheader name="reader">
+ <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </resheader>
+ <resheader name="writer">
+ <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </resheader>
+</root>
\ No newline at end of file
diff --git a/DevApp/Gs.DevApp/DevFrm/User/SysMenuAdd.Designer.cs b/DevApp/Gs.DevApp/DevFrm/User/SysMenuAdd.Designer.cs
new file mode 100644
index 0000000..c65e661
--- /dev/null
+++ b/DevApp/Gs.DevApp/DevFrm/User/SysMenuAdd.Designer.cs
@@ -0,0 +1,371 @@
+锘�
+namespace Gs.DevApp.DevFrm.User
+{
+ partial class SysMenuAdd
+ {
+ /// <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()
+ {
+ this.labelControl7 = new DevExpress.XtraEditors.LabelControl();
+ this.txtStatus = new DevExpress.XtraEditors.ComboBoxEdit();
+ this.txtIdx = new System.Windows.Forms.NumericUpDown();
+ this.labelControl1 = new DevExpress.XtraEditors.LabelControl();
+ this.btnEsc = new DevExpress.XtraEditors.SimpleButton();
+ this.btnSave = new DevExpress.XtraEditors.SimpleButton();
+ this.labelControl12 = new DevExpress.XtraEditors.LabelControl();
+ this.labelControl10 = new DevExpress.XtraEditors.LabelControl();
+ this.labelControl9 = new DevExpress.XtraEditors.LabelControl();
+ this.labelControl8 = new DevExpress.XtraEditors.LabelControl();
+ this.labelControl6 = new DevExpress.XtraEditors.LabelControl();
+ this.txtFormNamespace = new DevExpress.XtraEditors.MemoEdit();
+ this.labelControl5 = new DevExpress.XtraEditors.LabelControl();
+ this.txtMenuType = new DevExpress.XtraEditors.ComboBoxEdit();
+ this.txtMenuIco = new DevExpress.XtraEditors.TextEdit();
+ this.labelControl4 = new DevExpress.XtraEditors.LabelControl();
+ this.labelControl3 = new DevExpress.XtraEditors.LabelControl();
+ this.txtMenuName = new DevExpress.XtraEditors.TextEdit();
+ this.labelControl2 = new DevExpress.XtraEditors.LabelControl();
+ this.panel1 = new System.Windows.Forms.Panel();
+ this.tabPage1 = new System.Windows.Forms.TabPage();
+ this.tabControl1 = new System.Windows.Forms.TabControl();
+ this.txtParentMenuName = new DevExpress.XtraEditors.TreeListLookUpEdit();
+ this.treeListLookUpEdit1TreeList = new DevExpress.XtraTreeList.TreeList();
+ ((System.ComponentModel.ISupportInitialize)(this.txtStatus.Properties)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.txtIdx)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.txtFormNamespace.Properties)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.txtMenuType.Properties)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.txtMenuIco.Properties)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.txtMenuName.Properties)).BeginInit();
+ this.panel1.SuspendLayout();
+ this.tabPage1.SuspendLayout();
+ this.tabControl1.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.txtParentMenuName.Properties)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.treeListLookUpEdit1TreeList)).BeginInit();
+ this.SuspendLayout();
+ //
+ // labelControl7
+ //
+ this.labelControl7.Location = new System.Drawing.Point(33, 273);
+ this.labelControl7.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+ this.labelControl7.Name = "labelControl7";
+ this.labelControl7.Size = new System.Drawing.Size(75, 18);
+ this.labelControl7.TabIndex = 115;
+ this.labelControl7.Text = "鑿滃崟鐘舵�侊細";
+ //
+ // txtStatus
+ //
+ this.txtStatus.Location = new System.Drawing.Point(111, 269);
+ this.txtStatus.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+ this.txtStatus.Name = "txtStatus";
+ this.txtStatus.Properties.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] {
+ new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Combo)});
+ this.txtStatus.Properties.Items.AddRange(new object[] {
+ "-璇烽�夋嫨-",
+ "姝e父",
+ "绂佺敤"});
+ this.txtStatus.Properties.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.DisableTextEditor;
+ this.txtStatus.Size = new System.Drawing.Size(297, 24);
+ this.txtStatus.TabIndex = 114;
+ //
+ // txtIdx
+ //
+ this.txtIdx.Location = new System.Drawing.Point(111, 236);
+ this.txtIdx.Name = "txtIdx";
+ this.txtIdx.Size = new System.Drawing.Size(120, 26);
+ this.txtIdx.TabIndex = 113;
+ //
+ // labelControl1
+ //
+ this.labelControl1.Location = new System.Drawing.Point(30, 244);
+ this.labelControl1.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+ this.labelControl1.Name = "labelControl1";
+ this.labelControl1.Size = new System.Drawing.Size(75, 18);
+ this.labelControl1.TabIndex = 112;
+ this.labelControl1.Text = "鑿滃崟鎺掑簭锛�";
+ //
+ // btnEsc
+ //
+ this.btnEsc.Location = new System.Drawing.Point(299, 342);
+ this.btnEsc.Name = "btnEsc";
+ this.btnEsc.Size = new System.Drawing.Size(94, 29);
+ this.btnEsc.TabIndex = 111;
+ this.btnEsc.Text = "鍙栨秷";
+ //
+ // btnSave
+ //
+ this.btnSave.Location = new System.Drawing.Point(129, 343);
+ this.btnSave.Name = "btnSave";
+ this.btnSave.Size = new System.Drawing.Size(94, 29);
+ this.btnSave.TabIndex = 110;
+ this.btnSave.Text = "淇濆瓨";
+ //
+ // labelControl12
+ //
+ this.labelControl12.Appearance.ForeColor = System.Drawing.Color.Red;
+ this.labelControl12.Appearance.Options.UseForeColor = true;
+ this.labelControl12.Location = new System.Drawing.Point(415, 121);
+ this.labelControl12.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+ this.labelControl12.Name = "labelControl12";
+ this.labelControl12.Size = new System.Drawing.Size(8, 18);
+ this.labelControl12.TabIndex = 107;
+ this.labelControl12.Text = "*";
+ //
+ // labelControl10
+ //
+ this.labelControl10.Appearance.ForeColor = System.Drawing.Color.Red;
+ this.labelControl10.Appearance.Options.UseForeColor = true;
+ this.labelControl10.Location = new System.Drawing.Point(415, 92);
+ this.labelControl10.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+ this.labelControl10.Name = "labelControl10";
+ this.labelControl10.Size = new System.Drawing.Size(8, 18);
+ this.labelControl10.TabIndex = 109;
+ this.labelControl10.Text = "*";
+ //
+ // labelControl9
+ //
+ this.labelControl9.Appearance.ForeColor = System.Drawing.Color.Red;
+ this.labelControl9.Appearance.Options.UseForeColor = true;
+ this.labelControl9.Location = new System.Drawing.Point(415, 57);
+ this.labelControl9.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+ this.labelControl9.Name = "labelControl9";
+ this.labelControl9.Size = new System.Drawing.Size(8, 18);
+ this.labelControl9.TabIndex = 108;
+ this.labelControl9.Text = "*";
+ //
+ // labelControl8
+ //
+ this.labelControl8.Appearance.ForeColor = System.Drawing.Color.Red;
+ this.labelControl8.Appearance.Options.UseForeColor = true;
+ this.labelControl8.Location = new System.Drawing.Point(415, 14);
+ this.labelControl8.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+ this.labelControl8.Name = "labelControl8";
+ this.labelControl8.Size = new System.Drawing.Size(8, 18);
+ this.labelControl8.TabIndex = 106;
+ this.labelControl8.Text = "*";
+ //
+ // labelControl6
+ //
+ this.labelControl6.Location = new System.Drawing.Point(33, 155);
+ this.labelControl6.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+ this.labelControl6.Name = "labelControl6";
+ this.labelControl6.Size = new System.Drawing.Size(75, 18);
+ this.labelControl6.TabIndex = 103;
+ this.labelControl6.Text = "绐椾綋绫诲悕锛�";
+ //
+ // txtFormNamespace
+ //
+ this.txtFormNamespace.Location = new System.Drawing.Point(111, 152);
+ this.txtFormNamespace.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+ this.txtFormNamespace.Name = "txtFormNamespace";
+ this.txtFormNamespace.Properties.ScrollBars = System.Windows.Forms.ScrollBars.None;
+ this.txtFormNamespace.Size = new System.Drawing.Size(297, 68);
+ this.txtFormNamespace.TabIndex = 102;
+ //
+ // labelControl5
+ //
+ this.labelControl5.Location = new System.Drawing.Point(33, 121);
+ this.labelControl5.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+ this.labelControl5.Name = "labelControl5";
+ this.labelControl5.Size = new System.Drawing.Size(75, 18);
+ this.labelControl5.TabIndex = 101;
+ this.labelControl5.Text = "绐椾綋绫诲瀷锛�";
+ //
+ // txtMenuType
+ //
+ this.txtMenuType.Location = new System.Drawing.Point(111, 117);
+ this.txtMenuType.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+ this.txtMenuType.Name = "txtMenuType";
+ this.txtMenuType.Properties.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] {
+ new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Combo)});
+ this.txtMenuType.Properties.Items.AddRange(new object[] {
+ "-璇烽�夋嫨-",
+ "绐椾綋绫诲瀷",
+ "鎸夐挳绫诲瀷"});
+ this.txtMenuType.Properties.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.DisableTextEditor;
+ this.txtMenuType.Size = new System.Drawing.Size(297, 24);
+ this.txtMenuType.TabIndex = 100;
+ //
+ // txtMenuIco
+ //
+ this.txtMenuIco.Location = new System.Drawing.Point(111, 83);
+ this.txtMenuIco.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+ this.txtMenuIco.Name = "txtMenuIco";
+ this.txtMenuIco.Size = new System.Drawing.Size(297, 24);
+ this.txtMenuIco.TabIndex = 99;
+ //
+ // labelControl4
+ //
+ this.labelControl4.Location = new System.Drawing.Point(33, 87);
+ this.labelControl4.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+ this.labelControl4.Name = "labelControl4";
+ this.labelControl4.Size = new System.Drawing.Size(75, 18);
+ this.labelControl4.TabIndex = 98;
+ this.labelControl4.Text = "鑿滃崟鍥炬爣锛�";
+ //
+ // labelControl3
+ //
+ this.labelControl3.Location = new System.Drawing.Point(33, 17);
+ this.labelControl3.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+ this.labelControl3.Name = "labelControl3";
+ this.labelControl3.Size = new System.Drawing.Size(75, 18);
+ this.labelControl3.TabIndex = 97;
+ this.labelControl3.Text = "鐖剁骇鑿滃崟锛�";
+ //
+ // txtMenuName
+ //
+ this.txtMenuName.Location = new System.Drawing.Point(111, 48);
+ this.txtMenuName.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+ this.txtMenuName.Name = "txtMenuName";
+ this.txtMenuName.Size = new System.Drawing.Size(297, 24);
+ this.txtMenuName.TabIndex = 95;
+ //
+ // labelControl2
+ //
+ this.labelControl2.Location = new System.Drawing.Point(33, 52);
+ this.labelControl2.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+ this.labelControl2.Name = "labelControl2";
+ this.labelControl2.Size = new System.Drawing.Size(75, 18);
+ this.labelControl2.TabIndex = 94;
+ this.labelControl2.Text = "鑿滃崟鍚嶇О锛�";
+ //
+ // panel1
+ //
+ this.panel1.Controls.Add(this.txtParentMenuName);
+ this.panel1.Controls.Add(this.labelControl7);
+ this.panel1.Controls.Add(this.txtStatus);
+ this.panel1.Controls.Add(this.txtIdx);
+ this.panel1.Controls.Add(this.labelControl1);
+ this.panel1.Controls.Add(this.btnEsc);
+ this.panel1.Controls.Add(this.btnSave);
+ this.panel1.Controls.Add(this.labelControl12);
+ this.panel1.Controls.Add(this.labelControl10);
+ this.panel1.Controls.Add(this.labelControl9);
+ this.panel1.Controls.Add(this.labelControl8);
+ this.panel1.Controls.Add(this.labelControl6);
+ this.panel1.Controls.Add(this.txtFormNamespace);
+ this.panel1.Controls.Add(this.labelControl5);
+ this.panel1.Controls.Add(this.txtMenuType);
+ this.panel1.Controls.Add(this.txtMenuIco);
+ this.panel1.Controls.Add(this.labelControl4);
+ this.panel1.Controls.Add(this.labelControl3);
+ this.panel1.Controls.Add(this.txtMenuName);
+ this.panel1.Controls.Add(this.labelControl2);
+ this.panel1.Location = new System.Drawing.Point(57, 6);
+ this.panel1.Name = "panel1";
+ this.panel1.Size = new System.Drawing.Size(480, 425);
+ this.panel1.TabIndex = 0;
+ //
+ // tabPage1
+ //
+ this.tabPage1.Controls.Add(this.panel1);
+ this.tabPage1.Location = new System.Drawing.Point(4, 27);
+ this.tabPage1.Name = "tabPage1";
+ this.tabPage1.Padding = new System.Windows.Forms.Padding(3);
+ this.tabPage1.Size = new System.Drawing.Size(707, 484);
+ this.tabPage1.TabIndex = 0;
+ this.tabPage1.Text = "tabPage1";
+ this.tabPage1.UseVisualStyleBackColor = true;
+ //
+ // tabControl1
+ //
+ this.tabControl1.Controls.Add(this.tabPage1);
+ this.tabControl1.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.tabControl1.Location = new System.Drawing.Point(0, 0);
+ this.tabControl1.Name = "tabControl1";
+ this.tabControl1.SelectedIndex = 0;
+ this.tabControl1.Size = new System.Drawing.Size(715, 515);
+ this.tabControl1.TabIndex = 1;
+ //
+ // txtParentMenuName
+ //
+ this.txtParentMenuName.Location = new System.Drawing.Point(114, 11);
+ this.txtParentMenuName.Name = "txtParentMenuName";
+ this.txtParentMenuName.Properties.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] {
+ new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Combo)});
+ this.txtParentMenuName.Properties.TreeList = this.treeListLookUpEdit1TreeList;
+ this.txtParentMenuName.Size = new System.Drawing.Size(294, 24);
+ this.txtParentMenuName.TabIndex = 116;
+ //
+ // treeListLookUpEdit1TreeList
+ //
+ this.treeListLookUpEdit1TreeList.Location = new System.Drawing.Point(0, 0);
+ this.treeListLookUpEdit1TreeList.Name = "treeListLookUpEdit1TreeList";
+ this.treeListLookUpEdit1TreeList.OptionsView.ShowIndentAsRowStyle = true;
+ this.treeListLookUpEdit1TreeList.Size = new System.Drawing.Size(400, 200);
+ this.treeListLookUpEdit1TreeList.TabIndex = 0;
+ //
+ // SysMenuAdd
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 18F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(715, 515);
+ this.Controls.Add(this.tabControl1);
+ this.Name = "SysMenuAdd";
+ this.Text = "SysMenuAdd";
+ ((System.ComponentModel.ISupportInitialize)(this.txtStatus.Properties)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.txtIdx)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.txtFormNamespace.Properties)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.txtMenuType.Properties)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.txtMenuIco.Properties)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.txtMenuName.Properties)).EndInit();
+ this.panel1.ResumeLayout(false);
+ this.panel1.PerformLayout();
+ this.tabPage1.ResumeLayout(false);
+ this.tabControl1.ResumeLayout(false);
+ ((System.ComponentModel.ISupportInitialize)(this.txtParentMenuName.Properties)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.treeListLookUpEdit1TreeList)).EndInit();
+ this.ResumeLayout(false);
+
+ }
+
+ #endregion
+
+ private DevExpress.XtraEditors.LabelControl labelControl7;
+ private DevExpress.XtraEditors.ComboBoxEdit txtStatus;
+ private System.Windows.Forms.NumericUpDown txtIdx;
+ private DevExpress.XtraEditors.LabelControl labelControl1;
+ private DevExpress.XtraEditors.SimpleButton btnEsc;
+ private DevExpress.XtraEditors.SimpleButton btnSave;
+ private DevExpress.XtraEditors.LabelControl labelControl12;
+ private DevExpress.XtraEditors.LabelControl labelControl10;
+ private DevExpress.XtraEditors.LabelControl labelControl9;
+ private DevExpress.XtraEditors.LabelControl labelControl8;
+ private DevExpress.XtraEditors.LabelControl labelControl6;
+ private DevExpress.XtraEditors.MemoEdit txtFormNamespace;
+ private DevExpress.XtraEditors.LabelControl labelControl5;
+ private DevExpress.XtraEditors.ComboBoxEdit txtMenuType;
+ private DevExpress.XtraEditors.TextEdit txtMenuIco;
+ private DevExpress.XtraEditors.LabelControl labelControl4;
+ private DevExpress.XtraEditors.LabelControl labelControl3;
+ private DevExpress.XtraEditors.TextEdit txtMenuName;
+ private DevExpress.XtraEditors.LabelControl labelControl2;
+ private System.Windows.Forms.Panel panel1;
+ private System.Windows.Forms.TabPage tabPage1;
+ private System.Windows.Forms.TabControl tabControl1;
+ private DevExpress.XtraEditors.TreeListLookUpEdit txtParentMenuName;
+ private DevExpress.XtraTreeList.TreeList treeListLookUpEdit1TreeList;
+ }
+}
\ No newline at end of file
diff --git a/DevApp/Gs.DevApp/DevFrm/User/SysMenuAdd.cs b/DevApp/Gs.DevApp/DevFrm/User/SysMenuAdd.cs
new file mode 100644
index 0000000..278b0ae
--- /dev/null
+++ b/DevApp/Gs.DevApp/DevFrm/User/SysMenuAdd.cs
@@ -0,0 +1,88 @@
+锘縰sing DevExpress.XtraEditors;
+using Newtonsoft.Json;
+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;
+using Gs.DevApp.ToolBox;
+using Gs.DevApp.Models;
+using DevExpress.XtraTreeList.Nodes;
+namespace Gs.DevApp.DevFrm.User
+{
+ public partial class SysMenuAdd : DevExpress.XtraEditors.XtraForm
+ {
+ public SysMenuAdd()
+ {
+ InitializeComponent();
+ btnSave.Click += BtnSave_Click;
+ btnEsc.Click += BtnEsc_Click;
+ getTree();
+ }
+
+ private void BtnEsc_Click(object sender, EventArgs e)
+ {
+ this.Dispose();
+ }
+
+ private void BtnSave_Click(object sender, EventArgs e)
+ {
+ string _upGuid = "";
+ TreeListNode focusedNode = txtParentMenuName.Properties.TreeList.FocusedNode;
+ if (focusedNode != null)
+ {
+ _upGuid = focusedNode.GetValue("guid").ToString();
+ }
+ var _obj = new
+ {
+ guid = "",//涓诲缓
+ upGuid = _upGuid,//涓婄骇鐨勪富寤�
+ name = txtMenuName.Text.Trim(),//鍚嶇О
+ serialNumber = "",//缂栧彿
+ icon = txtMenuIco.Text,//鑿滃崟鍥炬爣
+ status = txtStatus.SelectedIndex,//鐘舵��
+ fromPath = txtFormNamespace.Text.Trim(),//绐椾綋璺緞
+ idx = int.Parse(txtIdx.Value.ToString()),//鎺掑簭
+ category = txtMenuType.SelectedIndex,//绫诲瀷
+ };
+ string json = JsonConvert.SerializeObject(_obj);
+ try
+ {
+ Utility.HttpPost("", "MenuAction/EditModel", json);
+ }
+ catch (Exception ex)
+ {
+ throw ex;
+ }
+ }
+
+ private void getTree()
+ {
+ Models.PageQueryModel pgq = new Models.PageQueryModel(1, 999999, "idx", "desc", "", "");
+ string json = JsonConvert.SerializeObject(pgq);
+ string strReturn = "";
+ try
+ {
+
+ strReturn =Utility.HttpPost("", "MenuAction/GetListPage", json);
+ ReturnModel<PageListModel> dd = Utility.GetTableByJson(strReturn);
+ DataTable dt = dd.rtnData.list;
+ txtParentMenuName.Properties.DataSource = dt;
+ txtParentMenuName.Properties.DisplayMember = "name";
+ txtParentMenuName.Properties.DataSource = dt;
+ txtParentMenuName.Properties.DisplayMember = "name";
+ txtParentMenuName.Properties.TreeList.KeyFieldName = "guid";
+ txtParentMenuName.Properties.TreeList.ParentFieldName = "upGuid";
+ }
+ catch (Exception ex)
+ {
+ throw ex;
+ }
+
+ }
+ }
+}
\ No newline at end of file
diff --git a/DevApp/Gs.DevApp/DevFrm/User/SysMenuAdd.resx b/DevApp/Gs.DevApp/DevFrm/User/SysMenuAdd.resx
new file mode 100644
index 0000000..1af7de1
--- /dev/null
+++ b/DevApp/Gs.DevApp/DevFrm/User/SysMenuAdd.resx
@@ -0,0 +1,120 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<root>
+ <!--
+ Microsoft ResX Schema
+
+ Version 2.0
+
+ The primary goals of this format is to allow a simple XML format
+ that is mostly human readable. The generation and parsing of the
+ various data types are done through the TypeConverter classes
+ associated with the data types.
+
+ Example:
+
+ ... ado.net/XML headers & schema ...
+ <resheader name="resmimetype">text/microsoft-resx</resheader>
+ <resheader name="version">2.0</resheader>
+ <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+ <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+ <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+ <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+ <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+ <value>[base64 mime encoded serialized .NET Framework object]</value>
+ </data>
+ <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+ <comment>This is a comment</comment>
+ </data>
+
+ There are any number of "resheader" rows that contain simple
+ name/value pairs.
+
+ Each data row contains a name, and value. The row also contains a
+ type or mimetype. Type corresponds to a .NET class that support
+ text/value conversion through the TypeConverter architecture.
+ Classes that don't support this are serialized and stored with the
+ mimetype set.
+
+ The mimetype is used for serialized objects, and tells the
+ ResXResourceReader how to depersist the object. This is currently not
+ extensible. For a given mimetype the value must be set accordingly:
+
+ Note - application/x-microsoft.net.object.binary.base64 is the format
+ that the ResXResourceWriter will generate, however the reader can
+ read any of the formats listed below.
+
+ mimetype: application/x-microsoft.net.object.binary.base64
+ value : The object must be serialized with
+ : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+ : and then encoded with base64 encoding.
+
+ mimetype: application/x-microsoft.net.object.soap.base64
+ value : The object must be serialized with
+ : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+ : and then encoded with base64 encoding.
+
+ mimetype: application/x-microsoft.net.object.bytearray.base64
+ value : The object must be serialized into a byte array
+ : using a System.ComponentModel.TypeConverter
+ : and then encoded with base64 encoding.
+ -->
+ <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+ <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+ <xsd:element name="root" msdata:IsDataSet="true">
+ <xsd:complexType>
+ <xsd:choice maxOccurs="unbounded">
+ <xsd:element name="metadata">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" />
+ </xsd:sequence>
+ <xsd:attribute name="name" use="required" type="xsd:string" />
+ <xsd:attribute name="type" type="xsd:string" />
+ <xsd:attribute name="mimetype" type="xsd:string" />
+ <xsd:attribute ref="xml:space" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="assembly">
+ <xsd:complexType>
+ <xsd:attribute name="alias" type="xsd:string" />
+ <xsd:attribute name="name" type="xsd:string" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="data">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+ <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+ <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+ <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+ <xsd:attribute ref="xml:space" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="resheader">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required" />
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:choice>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:schema>
+ <resheader name="resmimetype">
+ <value>text/microsoft-resx</value>
+ </resheader>
+ <resheader name="version">
+ <value>2.0</value>
+ </resheader>
+ <resheader name="reader">
+ <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </resheader>
+ <resheader name="writer">
+ <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </resheader>
+</root>
\ No newline at end of file
diff --git a/DevApp/Gs.DevApp/Gs.DevApp.csproj b/DevApp/Gs.DevApp/Gs.DevApp.csproj
new file mode 100644
index 0000000..a712d43
--- /dev/null
+++ b/DevApp/Gs.DevApp/Gs.DevApp.csproj
@@ -0,0 +1,194 @@
+锘�<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">x86</Platform>
+ <ProductVersion>8.0.30703</ProductVersion>
+ <SchemaVersion>2.0</SchemaVersion>
+ <ProjectGuid>{A7EB5F78-699E-4514-8905-30842765E673}</ProjectGuid>
+ <OutputType>WinExe</OutputType>
+ <AppDesignerFolder>Properties</AppDesignerFolder>
+ <RootNamespace>Gs.DevApp</RootNamespace>
+ <AssemblyName>Gs.DevApp</AssemblyName>
+ <TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
+ <FileAlignment>512</FileAlignment>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <PlatformTarget>AnyCPU</PlatformTarget>
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>bin\Debug\</OutputPath>
+ <DefineConstants>DEBUG;TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <PlatformTarget>AnyCPU</PlatformTarget>
+ <DebugType>pdbonly</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>bin\Release\</OutputPath>
+ <DefineConstants>TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="DevExpress.BonusSkins.v19.2" />
+ <Reference Include="DevExpress.Data.v19.2" />
+ <Reference Include="DevExpress.Utils.v19.2" />
+ <Reference Include="DevExpress.Sparkline.v19.2.Core" />
+ <Reference Include="DevExpress.XtraBars.v19.2, Version=19.2.8.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
+ <Reference Include="DevExpress.XtraEditors.v19.2" />
+ <Reference Include="DevExpress.Printing.v19.2.Core" />
+ <Reference Include="DevExpress.XtraLayout.v19.2, Version=19.2.8.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
+ <Reference Include="DevExpress.XtraTreeList.v19.2, Version=19.2.8.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
+ <Reference Include="Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
+ <HintPath>..\packages\Newtonsoft.Json.13.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
+ </Reference>
+ <Reference Include="System" />
+ <Reference Include="System.Core" />
+ <Reference Include="System.Xml.Linq" />
+ <Reference Include="System.Data.DataSetExtensions" />
+ <Reference Include="Microsoft.CSharp" />
+ <Reference Include="System.Data" />
+ <Reference Include="System.Deployment" />
+ <Reference Include="System.Drawing" />
+ <Reference Include="System.Windows.Forms" />
+ <Reference Include="System.Xml" />
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="DevFrm\FrmLogin.cs">
+ <SubType>Form</SubType>
+ </Compile>
+ <Compile Include="DevFrm\FrmLogin.Designer.cs">
+ <DependentUpon>FrmLogin.cs</DependentUpon>
+ </Compile>
+ <Compile Include="DevFrm\FrmMain.cs">
+ <SubType>Form</SubType>
+ </Compile>
+ <Compile Include="DevFrm\FrmMain.Designer.cs">
+ <DependentUpon>FrmMain.cs</DependentUpon>
+ </Compile>
+ <Compile Include="DevFrm\User\Organization.cs">
+ <SubType>Form</SubType>
+ </Compile>
+ <Compile Include="DevFrm\User\Organization.Designer.cs">
+ <DependentUpon>Organization.cs</DependentUpon>
+ </Compile>
+ <Compile Include="DevFrm\User\SysMenu.cs">
+ <SubType>Form</SubType>
+ </Compile>
+ <Compile Include="DevFrm\User\SysMenu.Designer.cs">
+ <DependentUpon>SysMenu.cs</DependentUpon>
+ </Compile>
+ <Compile Include="DevFrm\User\SysMenuAdd.cs">
+ <SubType>Form</SubType>
+ </Compile>
+ <Compile Include="DevFrm\User\SysMenuAdd.Designer.cs">
+ <DependentUpon>SysMenuAdd.cs</DependentUpon>
+ </Compile>
+ <Compile Include="Models\PageQueryModel.cs" />
+ <Compile Include="Models\ReturnModel.cs" />
+ <Compile Include="Program.cs" />
+ <Compile Include="Properties\AssemblyInfo.cs" />
+ <Compile Include="Properties\Resources.Designer.cs">
+ <AutoGen>True</AutoGen>
+ <DesignTime>True</DesignTime>
+ <DependentUpon>Resources.resx</DependentUpon>
+ </Compile>
+ <Compile Include="TestForm\FluentDesignForm1.cs">
+ <SubType>Form</SubType>
+ </Compile>
+ <Compile Include="TestForm\FluentDesignForm1.Designer.cs">
+ <DependentUpon>FluentDesignForm1.cs</DependentUpon>
+ </Compile>
+ <Compile Include="TestForm\ToolbarForm1.cs">
+ <SubType>Form</SubType>
+ </Compile>
+ <Compile Include="TestForm\ToolbarForm1.Designer.cs">
+ <DependentUpon>ToolbarForm1.cs</DependentUpon>
+ </Compile>
+ <Compile Include="ToolBox\LogHelper.cs" />
+ <Compile Include="ToolBox\Msg.cs" />
+ <Compile Include="ToolBox\Utility.cs" />
+ <Compile Include="UserControl\ShowDialogForm.cs">
+ <SubType>Form</SubType>
+ </Compile>
+ <Compile Include="UserControl\ShowDialogForm.designer.cs">
+ <DependentUpon>ShowDialogForm.cs</DependentUpon>
+ </Compile>
+ <Compile Include="UserControl\ToolBarMenu.cs">
+ <SubType>UserControl</SubType>
+ </Compile>
+ <Compile Include="UserControl\ToolBarMenu.Designer.cs">
+ <DependentUpon>ToolBarMenu.cs</DependentUpon>
+ </Compile>
+ <EmbeddedResource Include="DevFrm\FrmLogin.resx">
+ <DependentUpon>FrmLogin.cs</DependentUpon>
+ </EmbeddedResource>
+ <EmbeddedResource Include="DevFrm\FrmMain.resx">
+ <DependentUpon>FrmMain.cs</DependentUpon>
+ </EmbeddedResource>
+ <EmbeddedResource Include="DevFrm\User\Organization.resx">
+ <DependentUpon>Organization.cs</DependentUpon>
+ </EmbeddedResource>
+ <EmbeddedResource Include="DevFrm\User\SysMenu.resx">
+ <DependentUpon>SysMenu.cs</DependentUpon>
+ </EmbeddedResource>
+ <EmbeddedResource Include="DevFrm\User\SysMenuAdd.resx">
+ <DependentUpon>SysMenuAdd.cs</DependentUpon>
+ </EmbeddedResource>
+ <EmbeddedResource Include="Properties\Resources.resx">
+ <Generator>ResXFileCodeGenerator</Generator>
+ <LastGenOutput>Resources.Designer.cs</LastGenOutput>
+ </EmbeddedResource>
+ <EmbeddedResource Include="UserControl\ShowDialogForm.resx">
+ <DependentUpon>ShowDialogForm.cs</DependentUpon>
+ </EmbeddedResource>
+ <EmbeddedResource Include="UserControl\ToolBarMenu.resx">
+ <DependentUpon>ToolBarMenu.cs</DependentUpon>
+ </EmbeddedResource>
+ <None Include="App.config" />
+ <None Include="packages.config" />
+ <None Include="Properties\Settings.settings">
+ <Generator>SettingsSingleFileGenerator</Generator>
+ <LastGenOutput>Settings.Designer.cs</LastGenOutput>
+ </None>
+ <Compile Include="Properties\Settings.Designer.cs">
+ <AutoGen>True</AutoGen>
+ <DependentUpon>Settings.settings</DependentUpon>
+ <DesignTimeSharedInput>True</DesignTimeSharedInput>
+ </Compile>
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="Resources\trackingchanges_allmarkup_32x32.png" />
+ <None Include="Resources\trackingchanges_allmarkup_16x16.png" />
+ <None Include="Resources\removegroupfooter_32x32.png" />
+ <None Include="Resources\removegroupfooter_16x16.png" />
+ <None Include="Resources\trackingchanges_trackchanges_32x32.png" />
+ <None Include="Resources\trackingchanges_trackchanges_16x16.png" />
+ <None Include="Resources\exportfile_32x32.png" />
+ <None Include="Resources\exportfile_16x16.png" />
+ <None Include="Resources\show_32x32.png" />
+ <None Include="Resources\show_16x16.png" />
+ <None Include="Resources\renamedatasource_32x32.png" />
+ <None Include="Resources\renamedatasource_16x16.png" />
+ <None Include="Resources\convert_32x32.png" />
+ <None Include="Resources\convert_16x16.png" />
+ <None Include="Resources\converttorange_32x32.png" />
+ <None Include="Resources\converttorange_16x16.png" />
+ <None Include="Resources\checkbox2_32x32.png" />
+ <None Include="Resources\checkbox2_16x16.png" />
+ <None Include="Resources\forcetesting_32x32.png" />
+ <None Include="Resources\forcetesting_16x16.png" />
+ <Content Include="Resources\user_16x16.png" />
+ </ItemGroup>
+ <ItemGroup />
+ <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+ <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
+ Other similar extension points exist, see Microsoft.Common.targets.
+ <Target Name="BeforeBuild">
+ </Target>
+ <Target Name="AfterBuild">
+ </Target>
+ -->
+</Project>
\ No newline at end of file
diff --git a/DevApp/Gs.DevApp/Models/PageQueryModel.cs b/DevApp/Gs.DevApp/Models/PageQueryModel.cs
new file mode 100644
index 0000000..49b6240
--- /dev/null
+++ b/DevApp/Gs.DevApp/Models/PageQueryModel.cs
@@ -0,0 +1,63 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Gs.DevApp.Models
+{
+ /// <summary>
+ /// 鏌ヨ瀹炰綋
+ /// </summary>
+ public class PageQueryModel
+ {
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="_currentPage">褰撳墠椤�</param>
+ /// <param name="_everyPageSize">姣忛〉澶у皬</param>
+ /// <param name="_sortName">鎺掑簭鍚�</param>
+ /// <param name="_sortOrder">鎺掑簭鏂瑰紡</param>
+ /// <param name="_keyWord">鏌ヨ鍏抽敭瀛�</param>
+ /// <param name="_keyWhere">鏌ヨ琛ㄨ揪寮� and 寮�澶�</param>
+ public PageQueryModel(int _currentPage, int _everyPageSize, string _sortName, string _sortOrder, string _keyWord, string _keyWhere)
+ {
+ this.currentPage = _currentPage;
+ this.everyPageSize = _everyPageSize;
+ this.sortName = _sortName;
+ this.sortOrder = _sortOrder;
+ this.keyWord = _keyWord;
+ this.keyWhere = _keyWhere;
+ }
+
+ /// <summary>
+ /// 褰撳墠椤�
+ /// </summary>
+ public int currentPage { get; set; }
+
+ /// <summary>
+ /// 姣忛〉澶у皬
+ /// </summary>
+ public int everyPageSize { get; set; }
+
+ /// <summary>
+ /// 鎺掑簭鍚�
+ /// </summary>
+ public string sortName { get; set; }
+
+ /// <summary>
+ /// 鎺掑簭鏂瑰紡
+ /// </summary>
+ public string sortOrder { get; set; }
+
+ /// <summary>
+ /// 鏌ヨ鍏抽敭瀛�
+ /// </summary>
+ public string keyWord { get; set; }
+
+ /// <summary>
+ /// 鏌ヨ琛ㄨ揪寮�
+ /// </summary>
+ public string keyWhere { get; set; }
+ }
+}
diff --git a/DevApp/Gs.DevApp/Models/ReturnModel.cs b/DevApp/Gs.DevApp/Models/ReturnModel.cs
new file mode 100644
index 0000000..68babb5
--- /dev/null
+++ b/DevApp/Gs.DevApp/Models/ReturnModel.cs
@@ -0,0 +1,47 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Gs.DevApp.Models
+{
+ public class ReturnModel<T>
+ {
+ /// <summary>
+ /// Default = -100榛樿, Unauthorized = -101闈炴硶璋冪敤, Exception = -102绯荤粺浠g爜寮傚父, Success = 1鎴愬姛
+ /// </summary>
+ public string rtnCode { set; get; }
+ public T rtnData { set; get; }
+ public string rtnMsg { get; set; }
+ }
+ public class PageListModel
+ {
+
+ /// <summary>
+ /// 鍒楄〃
+ /// </summary>
+ public System.Data.DataTable list { get; set; }
+ /// <summary>
+ /// 鎬婚〉鏁�
+ /// </summary>
+ public int pages;
+ /// <summary>
+ /// 鎬昏褰曟暟
+ /// </summary>
+ public int total;
+ /// <summary>
+ /// 姣忛〉澶у皬
+ /// </summary>
+ public int everyPageSize;
+ /// <summary>
+ /// 鎵╁睍鐢紝鍗曟枃鏈紝姣斿閲戦鍚堣绛夊叾瀹冮」鐩�
+ /// </summary>
+ public string extendText;
+ /// <summary>
+ /// 鎵╁睍鐢紝鍒楄〃
+ /// </summary>
+ public List<dynamic> extendList;
+ }
+
+}
diff --git a/DevApp/Gs.DevApp/Program.cs b/DevApp/Gs.DevApp/Program.cs
new file mode 100644
index 0000000..1bce4da
--- /dev/null
+++ b/DevApp/Gs.DevApp/Program.cs
@@ -0,0 +1,30 @@
+锘縰sing DevExpress.LookAndFeel;
+using DevExpress.Skins;
+using DevExpress.UserSkins;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Windows.Forms;
+
+namespace Gs.DevApp
+{
+ static class Program
+ {
+ /// <summary>
+ /// The main entry point for the application.
+ /// </summary>
+ [STAThread]
+ static void Main()
+ {
+ Application.EnableVisualStyles();
+ Application.SetCompatibleTextRenderingDefault(false);
+ DevFrm.FrmLogin fmLogin = new DevFrm.FrmLogin();
+ fmLogin.ShowDialog();
+ if (fmLogin.DialogResult == DialogResult.OK)
+ {
+ //鍦ㄧ嚎绋嬩腑鎵撳紑涓荤獥浣�
+ Application.Run(new DevFrm.FrmMain());
+ }
+ }
+ }
+}
diff --git a/DevApp/Gs.DevApp/Properties/AssemblyInfo.cs b/DevApp/Gs.DevApp/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..b7ad83c
--- /dev/null
+++ b/DevApp/Gs.DevApp/Properties/AssemblyInfo.cs
@@ -0,0 +1,32 @@
+锘縰sing System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("Gs.DevApp")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("Gs.DevApp")]
+[assembly: AssemblyCopyright("Copyright 漏 2024")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+// Setting ComVisible to false makes the types in this assembly not visible
+// to COM components. If you need to access a type in this assembly from
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("9006f149-aa49-4b8e-ba69-386d945fa738")]
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/DevApp/Gs.DevApp/Properties/Resources.Designer.cs b/DevApp/Gs.DevApp/Properties/Resources.Designer.cs
new file mode 100644
index 0000000..56fc616
--- /dev/null
+++ b/DevApp/Gs.DevApp/Properties/Resources.Designer.cs
@@ -0,0 +1,453 @@
+锘�//------------------------------------------------------------------------------
+// <auto-generated>
+// 姝や唬鐮佺敱宸ュ叿鐢熸垚銆�
+// 杩愯鏃剁増鏈�:4.0.30319.42000
+//
+// 瀵规鏂囦欢鐨勬洿鏀瑰彲鑳戒細瀵艰嚧涓嶆纭殑琛屼负锛屽苟涓斿鏋�
+// 閲嶆柊鐢熸垚浠g爜锛岃繖浜涙洿鏀瑰皢浼氫涪澶便��
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace Gs.DevApp.Properties {
+ using System;
+
+
+ /// <summary>
+ /// 涓�涓己绫诲瀷鐨勮祫婧愮被锛岀敤浜庢煡鎵炬湰鍦板寲鐨勫瓧绗︿覆绛夈��
+ /// </summary>
+ // 姝ょ被鏄敱 StronglyTypedResourceBuilder
+ // 绫婚�氳繃绫讳技浜� ResGen 鎴� Visual Studio 鐨勫伐鍏疯嚜鍔ㄧ敓鎴愮殑銆�
+ // 鑻ヨ娣诲姞鎴栫Щ闄ゆ垚鍛橈紝璇风紪杈� .ResX 鏂囦欢锛岀劧鍚庨噸鏂拌繍琛� ResGen
+ // (浠� /str 浣滀负鍛戒护閫夐」)锛屾垨閲嶆柊鐢熸垚 VS 椤圭洰銆�
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.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("Gs.DevApp.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 _3dcolumn_16x16 {
+ get {
+ object obj = ResourceManager.GetObject("3dcolumn_16x16", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ /// <summary>
+ /// 鏌ユ壘 System.Drawing.Bitmap 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+ /// </summary>
+ internal static System.Drawing.Bitmap _3dcolumn_32x32 {
+ get {
+ object obj = ResourceManager.GetObject("3dcolumn_32x32", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ /// <summary>
+ /// 鏌ユ壘 System.Drawing.Bitmap 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+ /// </summary>
+ internal static System.Drawing.Bitmap _3dcylinder_16x16 {
+ get {
+ object obj = ResourceManager.GetObject("3dcylinder_16x16", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ /// <summary>
+ /// 鏌ユ壘 System.Drawing.Bitmap 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+ /// </summary>
+ internal static System.Drawing.Bitmap _3dcylinder_32x32 {
+ get {
+ object obj = ResourceManager.GetObject("3dcylinder_32x32", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ /// <summary>
+ /// 鏌ユ壘 System.Drawing.Bitmap 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+ /// </summary>
+ internal static System.Drawing.Bitmap apply_32x32 {
+ get {
+ object obj = ResourceManager.GetObject("apply_32x32", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ /// <summary>
+ /// 鏌ユ壘 System.Drawing.Bitmap 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+ /// </summary>
+ internal static System.Drawing.Bitmap area3d_16x16 {
+ get {
+ object obj = ResourceManager.GetObject("area3d_16x16", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ /// <summary>
+ /// 鏌ユ壘 System.Drawing.Bitmap 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+ /// </summary>
+ internal static System.Drawing.Bitmap area3d_32x32 {
+ get {
+ object obj = ResourceManager.GetObject("area3d_32x32", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ /// <summary>
+ /// 鏌ユ壘 System.Drawing.Bitmap 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+ /// </summary>
+ internal static System.Drawing.Bitmap checkbox_32x32 {
+ get {
+ object obj = ResourceManager.GetObject("checkbox_32x32", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ /// <summary>
+ /// 鏌ユ壘 System.Drawing.Bitmap 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+ /// </summary>
+ internal static System.Drawing.Bitmap checkbox2_16x16 {
+ get {
+ object obj = ResourceManager.GetObject("checkbox2_16x16", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ /// <summary>
+ /// 鏌ユ壘 System.Drawing.Bitmap 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+ /// </summary>
+ internal static System.Drawing.Bitmap checkbox2_32x32 {
+ get {
+ object obj = ResourceManager.GetObject("checkbox2_32x32", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ /// <summary>
+ /// 鏌ユ壘 System.Drawing.Bitmap 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+ /// </summary>
+ internal static System.Drawing.Bitmap convert_16x16 {
+ get {
+ object obj = ResourceManager.GetObject("convert_16x16", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ /// <summary>
+ /// 鏌ユ壘 System.Drawing.Bitmap 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+ /// </summary>
+ internal static System.Drawing.Bitmap convert_32x32 {
+ get {
+ object obj = ResourceManager.GetObject("convert_32x32", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ /// <summary>
+ /// 鏌ユ壘 System.Drawing.Bitmap 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+ /// </summary>
+ internal static System.Drawing.Bitmap converttorange_16x16 {
+ get {
+ object obj = ResourceManager.GetObject("converttorange_16x16", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ /// <summary>
+ /// 鏌ユ壘 System.Drawing.Bitmap 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+ /// </summary>
+ internal static System.Drawing.Bitmap converttorange_32x32 {
+ get {
+ object obj = ResourceManager.GetObject("converttorange_32x32", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ /// <summary>
+ /// 鏌ユ壘 System.Drawing.Bitmap 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+ /// </summary>
+ internal static System.Drawing.Bitmap download_32x32 {
+ get {
+ object obj = ResourceManager.GetObject("download_32x32", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ /// <summary>
+ /// 鏌ユ壘 System.Drawing.Bitmap 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+ /// </summary>
+ internal static System.Drawing.Bitmap dropandhighlowlines_16x16 {
+ get {
+ object obj = ResourceManager.GetObject("dropandhighlowlines_16x16", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ /// <summary>
+ /// 鏌ユ壘 System.Drawing.Bitmap 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+ /// </summary>
+ internal static System.Drawing.Bitmap dropandhighlowlines_32x32 {
+ get {
+ object obj = ResourceManager.GetObject("dropandhighlowlines_32x32", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ /// <summary>
+ /// 鏌ユ壘 System.Drawing.Bitmap 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+ /// </summary>
+ internal static System.Drawing.Bitmap editingfillleft_32x32 {
+ get {
+ object obj = ResourceManager.GetObject("editingfillleft_32x32", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ /// <summary>
+ /// 鏌ユ壘 System.Drawing.Bitmap 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+ /// </summary>
+ internal static System.Drawing.Bitmap exportfile_16x16 {
+ get {
+ object obj = ResourceManager.GetObject("exportfile_16x16", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ /// <summary>
+ /// 鏌ユ壘 System.Drawing.Bitmap 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+ /// </summary>
+ internal static System.Drawing.Bitmap exportfile_32x32 {
+ get {
+ object obj = ResourceManager.GetObject("exportfile_32x32", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ /// <summary>
+ /// 鏌ユ壘 System.Drawing.Bitmap 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+ /// </summary>
+ internal static System.Drawing.Bitmap filledradarwithoutmarkers_32x32 {
+ get {
+ object obj = ResourceManager.GetObject("filledradarwithoutmarkers_32x32", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ /// <summary>
+ /// 鏌ユ壘 System.Drawing.Bitmap 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+ /// </summary>
+ internal static System.Drawing.Bitmap forcetesting_16x16 {
+ get {
+ object obj = ResourceManager.GetObject("forcetesting_16x16", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ /// <summary>
+ /// 鏌ユ壘 System.Drawing.Bitmap 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+ /// </summary>
+ internal static System.Drawing.Bitmap forcetesting_32x32 {
+ get {
+ object obj = ResourceManager.GetObject("forcetesting_32x32", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ /// <summary>
+ /// 鏌ユ壘 System.Drawing.Bitmap 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+ /// </summary>
+ internal static System.Drawing.Bitmap legendnone2_32x32 {
+ get {
+ object obj = ResourceManager.GetObject("legendnone2_32x32", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ /// <summary>
+ /// 鏌ユ壘 System.Drawing.Bitmap 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+ /// </summary>
+ internal static System.Drawing.Bitmap linktoprevious_16x16 {
+ get {
+ object obj = ResourceManager.GetObject("linktoprevious_16x16", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ /// <summary>
+ /// 鏌ユ壘 System.Drawing.Bitmap 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+ /// </summary>
+ internal static System.Drawing.Bitmap listmultilevel_16x16 {
+ get {
+ object obj = ResourceManager.GetObject("listmultilevel_16x16", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ /// <summary>
+ /// 鏌ユ壘 System.Drawing.Bitmap 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+ /// </summary>
+ internal static System.Drawing.Bitmap removegroupfooter_16x16 {
+ get {
+ object obj = ResourceManager.GetObject("removegroupfooter_16x16", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ /// <summary>
+ /// 鏌ユ壘 System.Drawing.Bitmap 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+ /// </summary>
+ internal static System.Drawing.Bitmap removegroupfooter_32x32 {
+ get {
+ object obj = ResourceManager.GetObject("removegroupfooter_32x32", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ /// <summary>
+ /// 鏌ユ壘 System.Drawing.Bitmap 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+ /// </summary>
+ internal static System.Drawing.Bitmap renamedatasource_16x16 {
+ get {
+ object obj = ResourceManager.GetObject("renamedatasource_16x16", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ /// <summary>
+ /// 鏌ユ壘 System.Drawing.Bitmap 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+ /// </summary>
+ internal static System.Drawing.Bitmap renamedatasource_32x32 {
+ get {
+ object obj = ResourceManager.GetObject("renamedatasource_32x32", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ /// <summary>
+ /// 鏌ユ壘 System.Drawing.Bitmap 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+ /// </summary>
+ internal static System.Drawing.Bitmap show_16x16 {
+ get {
+ object obj = ResourceManager.GetObject("show_16x16", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ /// <summary>
+ /// 鏌ユ壘 System.Drawing.Bitmap 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+ /// </summary>
+ internal static System.Drawing.Bitmap show_32x32 {
+ get {
+ object obj = ResourceManager.GetObject("show_32x32", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ /// <summary>
+ /// 鏌ユ壘 System.Drawing.Bitmap 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+ /// </summary>
+ internal static System.Drawing.Bitmap task_32x32 {
+ get {
+ object obj = ResourceManager.GetObject("task_32x32", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ /// <summary>
+ /// 鏌ユ壘 System.Drawing.Bitmap 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+ /// </summary>
+ internal static System.Drawing.Bitmap trackingchanges_allmarkup_16x16 {
+ get {
+ object obj = ResourceManager.GetObject("trackingchanges_allmarkup_16x16", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ /// <summary>
+ /// 鏌ユ壘 System.Drawing.Bitmap 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+ /// </summary>
+ internal static System.Drawing.Bitmap trackingchanges_allmarkup_32x32 {
+ get {
+ object obj = ResourceManager.GetObject("trackingchanges_allmarkup_32x32", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ /// <summary>
+ /// 鏌ユ壘 System.Drawing.Bitmap 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+ /// </summary>
+ internal static System.Drawing.Bitmap trackingchanges_trackchanges_16x16 {
+ get {
+ object obj = ResourceManager.GetObject("trackingchanges_trackchanges_16x16", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ /// <summary>
+ /// 鏌ユ壘 System.Drawing.Bitmap 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+ /// </summary>
+ internal static System.Drawing.Bitmap trackingchanges_trackchanges_32x32 {
+ get {
+ object obj = ResourceManager.GetObject("trackingchanges_trackchanges_32x32", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ /// <summary>
+ /// 鏌ユ壘 System.Drawing.Bitmap 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+ /// </summary>
+ internal static System.Drawing.Bitmap user_16x16 {
+ get {
+ object obj = ResourceManager.GetObject("user_16x16", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ /// <summary>
+ /// 鏌ユ壘 System.Drawing.Bitmap 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+ /// </summary>
+ internal static System.Drawing.Bitmap usergroup_32x32 {
+ get {
+ object obj = ResourceManager.GetObject("usergroup_32x32", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+ }
+}
diff --git a/DevApp/Gs.DevApp/Properties/Resources.resx b/DevApp/Gs.DevApp/Properties/Resources.resx
new file mode 100644
index 0000000..9de4c57
--- /dev/null
+++ b/DevApp/Gs.DevApp/Properties/Resources.resx
@@ -0,0 +1,238 @@
+锘�<?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="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+ <data name="convert_32x32" type="System.Resources.ResXFileRef, System.Windows.Forms">
+ <value>..\Resources\convert_32x32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+ </data>
+ <data name="converttorange_16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
+ <value>..\Resources\converttorange_16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+ </data>
+ <data name="area3d_16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
+ <value>..\Resources\area3d_16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+ </data>
+ <data name="checkbox2_32x32" type="System.Resources.ResXFileRef, System.Windows.Forms">
+ <value>..\Resources\checkbox2_32x32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+ </data>
+ <data name="3dcylinder_16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
+ <value>..\Resources\3dcylinder_16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+ </data>
+ <data name="area3d_32x32" type="System.Resources.ResXFileRef, System.Windows.Forms">
+ <value>..\Resources\area3d_32x32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+ </data>
+ <data name="trackingchanges_allmarkup_16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
+ <value>..\Resources\trackingchanges_allmarkup_16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+ </data>
+ <data name="renamedatasource_16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
+ <value>..\Resources\renamedatasource_16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+ </data>
+ <data name="apply_32x32" type="System.Resources.ResXFileRef, System.Windows.Forms">
+ <value>..\Resources\apply_32x32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+ </data>
+ <data name="usergroup_32x32" type="System.Resources.ResXFileRef, System.Windows.Forms">
+ <value>..\Resources\usergroup_32x32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+ </data>
+ <data name="task_32x32" type="System.Resources.ResXFileRef, System.Windows.Forms">
+ <value>..\Resources\task_32x32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+ </data>
+ <data name="3dcolumn_32x32" type="System.Resources.ResXFileRef, System.Windows.Forms">
+ <value>..\Resources\3dcolumn_32x32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+ </data>
+ <data name="dropandhighlowlines_32x32" type="System.Resources.ResXFileRef, System.Windows.Forms">
+ <value>..\Resources\dropandhighlowlines_32x32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+ </data>
+ <data name="forcetesting_32x32" type="System.Resources.ResXFileRef, System.Windows.Forms">
+ <value>..\Resources\forcetesting_32x32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+ </data>
+ <data name="exportfile_16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
+ <value>..\Resources\exportfile_16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+ </data>
+ <data name="filledradarwithoutmarkers_32x32" type="System.Resources.ResXFileRef, System.Windows.Forms">
+ <value>..\Resources\filledradarwithoutmarkers_32x32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+ </data>
+ <data name="converttorange_32x32" type="System.Resources.ResXFileRef, System.Windows.Forms">
+ <value>..\Resources\converttorange_32x32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+ </data>
+ <data name="3dcylinder_32x32" type="System.Resources.ResXFileRef, System.Windows.Forms">
+ <value>..\Resources\3dcylinder_32x32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+ </data>
+ <data name="legendnone2_32x32" type="System.Resources.ResXFileRef, System.Windows.Forms">
+ <value>..\Resources\legendnone2_32x32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+ </data>
+ <data name="renamedatasource_32x32" type="System.Resources.ResXFileRef, System.Windows.Forms">
+ <value>..\Resources\renamedatasource_32x32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+ </data>
+ <data name="trackingchanges_trackchanges_32x32" type="System.Resources.ResXFileRef, System.Windows.Forms">
+ <value>..\Resources\trackingchanges_trackchanges_32x32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+ </data>
+ <data name="checkbox_32x32" type="System.Resources.ResXFileRef, System.Windows.Forms">
+ <value>..\Resources\checkbox_32x32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+ </data>
+ <data name="editingfillleft_32x32" type="System.Resources.ResXFileRef, System.Windows.Forms">
+ <value>..\Resources\editingfillleft_32x32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+ </data>
+ <data name="user_16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
+ <value>..\Resources\user_16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+ </data>
+ <data name="show_32x32" type="System.Resources.ResXFileRef, System.Windows.Forms">
+ <value>..\Resources\show_32x32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+ </data>
+ <data name="linktoprevious_16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
+ <value>..\Resources\linktoprevious_16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+ </data>
+ <data name="download_32x32" type="System.Resources.ResXFileRef, System.Windows.Forms">
+ <value>..\Resources\download_32x32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+ </data>
+ <data name="trackingchanges_trackchanges_16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
+ <value>..\Resources\trackingchanges_trackchanges_16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+ </data>
+ <data name="exportfile_32x32" type="System.Resources.ResXFileRef, System.Windows.Forms">
+ <value>..\Resources\exportfile_32x32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+ </data>
+ <data name="removegroupfooter_32x32" type="System.Resources.ResXFileRef, System.Windows.Forms">
+ <value>..\Resources\removegroupfooter_32x32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+ </data>
+ <data name="convert_16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
+ <value>..\Resources\convert_16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+ </data>
+ <data name="show_16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
+ <value>..\Resources\show_16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+ </data>
+ <data name="removegroupfooter_16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
+ <value>..\Resources\removegroupfooter_16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+ </data>
+ <data name="trackingchanges_allmarkup_32x32" type="System.Resources.ResXFileRef, System.Windows.Forms">
+ <value>..\Resources\trackingchanges_allmarkup_32x32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+ </data>
+ <data name="dropandhighlowlines_16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
+ <value>..\Resources\dropandhighlowlines_16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+ </data>
+ <data name="checkbox2_16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
+ <value>..\Resources\checkbox2_16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+ </data>
+ <data name="3dcolumn_16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
+ <value>..\Resources\3dcolumn_16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+ </data>
+ <data name="listmultilevel_16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
+ <value>..\Resources\listmultilevel_16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+ </data>
+ <data name="forcetesting_16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
+ <value>..\Resources\forcetesting_16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+ </data>
+</root>
\ No newline at end of file
diff --git a/DevApp/Gs.DevApp/Properties/Settings.Designer.cs b/DevApp/Gs.DevApp/Properties/Settings.Designer.cs
new file mode 100644
index 0000000..c646499
--- /dev/null
+++ b/DevApp/Gs.DevApp/Properties/Settings.Designer.cs
@@ -0,0 +1,26 @@
+锘�//------------------------------------------------------------------------------
+// <auto-generated>
+// 姝や唬鐮佺敱宸ュ叿鐢熸垚銆�
+// 杩愯鏃剁増鏈�:4.0.30319.42000
+//
+// 瀵规鏂囦欢鐨勬洿鏀瑰彲鑳戒細瀵艰嚧涓嶆纭殑琛屼负锛屽苟涓斿鏋�
+// 閲嶆柊鐢熸垚浠g爜锛岃繖浜涙洿鏀瑰皢浼氫涪澶便��
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace GsDxApp.Properties {
+
+
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.10.0.0")]
+ internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
+
+ private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
+
+ public static Settings Default {
+ get {
+ return defaultInstance;
+ }
+ }
+ }
+}
diff --git a/DevApp/Gs.DevApp/Properties/Settings.settings b/DevApp/Gs.DevApp/Properties/Settings.settings
new file mode 100644
index 0000000..3964565
--- /dev/null
+++ b/DevApp/Gs.DevApp/Properties/Settings.settings
@@ -0,0 +1,7 @@
+锘�<?xml version='1.0' encoding='utf-8'?>
+<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
+ <Profiles>
+ <Profile Name="(Default)" />
+ </Profiles>
+ <Settings />
+</SettingsFile>
diff --git a/DevApp/Gs.DevApp/Resources/3dcolumn_16x16.png b/DevApp/Gs.DevApp/Resources/3dcolumn_16x16.png
new file mode 100644
index 0000000..daf5d5b
--- /dev/null
+++ b/DevApp/Gs.DevApp/Resources/3dcolumn_16x16.png
Binary files differ
diff --git a/DevApp/Gs.DevApp/Resources/3dcolumn_32x32.png b/DevApp/Gs.DevApp/Resources/3dcolumn_32x32.png
new file mode 100644
index 0000000..86212c6
--- /dev/null
+++ b/DevApp/Gs.DevApp/Resources/3dcolumn_32x32.png
Binary files differ
diff --git a/DevApp/Gs.DevApp/Resources/3dcylinder_16x16.png b/DevApp/Gs.DevApp/Resources/3dcylinder_16x16.png
new file mode 100644
index 0000000..3c51ea7
--- /dev/null
+++ b/DevApp/Gs.DevApp/Resources/3dcylinder_16x16.png
Binary files differ
diff --git a/DevApp/Gs.DevApp/Resources/3dcylinder_32x32.png b/DevApp/Gs.DevApp/Resources/3dcylinder_32x32.png
new file mode 100644
index 0000000..5b5c9bc
--- /dev/null
+++ b/DevApp/Gs.DevApp/Resources/3dcylinder_32x32.png
Binary files differ
diff --git a/DevApp/Gs.DevApp/Resources/apply_32x32.png b/DevApp/Gs.DevApp/Resources/apply_32x32.png
new file mode 100644
index 0000000..af2cae4
--- /dev/null
+++ b/DevApp/Gs.DevApp/Resources/apply_32x32.png
Binary files differ
diff --git a/DevApp/Gs.DevApp/Resources/area3d_16x16.png b/DevApp/Gs.DevApp/Resources/area3d_16x16.png
new file mode 100644
index 0000000..ebb0ee3
--- /dev/null
+++ b/DevApp/Gs.DevApp/Resources/area3d_16x16.png
Binary files differ
diff --git a/DevApp/Gs.DevApp/Resources/area3d_32x32.png b/DevApp/Gs.DevApp/Resources/area3d_32x32.png
new file mode 100644
index 0000000..411ce71
--- /dev/null
+++ b/DevApp/Gs.DevApp/Resources/area3d_32x32.png
Binary files differ
diff --git a/DevApp/Gs.DevApp/Resources/checkbox2_16x16.png b/DevApp/Gs.DevApp/Resources/checkbox2_16x16.png
new file mode 100644
index 0000000..3e4ab0e
--- /dev/null
+++ b/DevApp/Gs.DevApp/Resources/checkbox2_16x16.png
Binary files differ
diff --git a/DevApp/Gs.DevApp/Resources/checkbox2_32x32.png b/DevApp/Gs.DevApp/Resources/checkbox2_32x32.png
new file mode 100644
index 0000000..370f912
--- /dev/null
+++ b/DevApp/Gs.DevApp/Resources/checkbox2_32x32.png
Binary files differ
diff --git a/DevApp/Gs.DevApp/Resources/checkbox_32x32.png b/DevApp/Gs.DevApp/Resources/checkbox_32x32.png
new file mode 100644
index 0000000..a82728d
--- /dev/null
+++ b/DevApp/Gs.DevApp/Resources/checkbox_32x32.png
Binary files differ
diff --git a/DevApp/Gs.DevApp/Resources/colormixer_32x32.png b/DevApp/Gs.DevApp/Resources/colormixer_32x32.png
new file mode 100644
index 0000000..00f4edc
--- /dev/null
+++ b/DevApp/Gs.DevApp/Resources/colormixer_32x32.png
Binary files differ
diff --git a/DevApp/Gs.DevApp/Resources/convert_16x16.png b/DevApp/Gs.DevApp/Resources/convert_16x16.png
new file mode 100644
index 0000000..e696a02
--- /dev/null
+++ b/DevApp/Gs.DevApp/Resources/convert_16x16.png
Binary files differ
diff --git a/DevApp/Gs.DevApp/Resources/convert_32x32.png b/DevApp/Gs.DevApp/Resources/convert_32x32.png
new file mode 100644
index 0000000..89f9ff3
--- /dev/null
+++ b/DevApp/Gs.DevApp/Resources/convert_32x32.png
Binary files differ
diff --git a/DevApp/Gs.DevApp/Resources/converttorange_16x16.png b/DevApp/Gs.DevApp/Resources/converttorange_16x16.png
new file mode 100644
index 0000000..53b49a5
--- /dev/null
+++ b/DevApp/Gs.DevApp/Resources/converttorange_16x16.png
Binary files differ
diff --git a/DevApp/Gs.DevApp/Resources/converttorange_32x32.png b/DevApp/Gs.DevApp/Resources/converttorange_32x32.png
new file mode 100644
index 0000000..0b73409
--- /dev/null
+++ b/DevApp/Gs.DevApp/Resources/converttorange_32x32.png
Binary files differ
diff --git a/DevApp/Gs.DevApp/Resources/download_32x32.png b/DevApp/Gs.DevApp/Resources/download_32x32.png
new file mode 100644
index 0000000..54b6385
--- /dev/null
+++ b/DevApp/Gs.DevApp/Resources/download_32x32.png
Binary files differ
diff --git a/DevApp/Gs.DevApp/Resources/dropandhighlowlines_16x16.png b/DevApp/Gs.DevApp/Resources/dropandhighlowlines_16x16.png
new file mode 100644
index 0000000..797bdbd
--- /dev/null
+++ b/DevApp/Gs.DevApp/Resources/dropandhighlowlines_16x16.png
Binary files differ
diff --git a/DevApp/Gs.DevApp/Resources/dropandhighlowlines_32x32.png b/DevApp/Gs.DevApp/Resources/dropandhighlowlines_32x32.png
new file mode 100644
index 0000000..7bb80c2
--- /dev/null
+++ b/DevApp/Gs.DevApp/Resources/dropandhighlowlines_32x32.png
Binary files differ
diff --git a/DevApp/Gs.DevApp/Resources/editingfillleft_32x32.png b/DevApp/Gs.DevApp/Resources/editingfillleft_32x32.png
new file mode 100644
index 0000000..c460489
--- /dev/null
+++ b/DevApp/Gs.DevApp/Resources/editingfillleft_32x32.png
Binary files differ
diff --git a/DevApp/Gs.DevApp/Resources/exportfile_16x16.png b/DevApp/Gs.DevApp/Resources/exportfile_16x16.png
new file mode 100644
index 0000000..618b391
--- /dev/null
+++ b/DevApp/Gs.DevApp/Resources/exportfile_16x16.png
Binary files differ
diff --git a/DevApp/Gs.DevApp/Resources/exportfile_32x32.png b/DevApp/Gs.DevApp/Resources/exportfile_32x32.png
new file mode 100644
index 0000000..41acb1e
--- /dev/null
+++ b/DevApp/Gs.DevApp/Resources/exportfile_32x32.png
Binary files differ
diff --git a/DevApp/Gs.DevApp/Resources/filledradarwithoutmarkers_32x32.png b/DevApp/Gs.DevApp/Resources/filledradarwithoutmarkers_32x32.png
new file mode 100644
index 0000000..d653d86
--- /dev/null
+++ b/DevApp/Gs.DevApp/Resources/filledradarwithoutmarkers_32x32.png
Binary files differ
diff --git a/DevApp/Gs.DevApp/Resources/forcetesting_16x16.png b/DevApp/Gs.DevApp/Resources/forcetesting_16x16.png
new file mode 100644
index 0000000..be7712d
--- /dev/null
+++ b/DevApp/Gs.DevApp/Resources/forcetesting_16x16.png
Binary files differ
diff --git a/DevApp/Gs.DevApp/Resources/forcetesting_32x32.png b/DevApp/Gs.DevApp/Resources/forcetesting_32x32.png
new file mode 100644
index 0000000..eeca1e4
--- /dev/null
+++ b/DevApp/Gs.DevApp/Resources/forcetesting_32x32.png
Binary files differ
diff --git a/DevApp/Gs.DevApp/Resources/legendnone2_32x32.png b/DevApp/Gs.DevApp/Resources/legendnone2_32x32.png
new file mode 100644
index 0000000..d75ad74
--- /dev/null
+++ b/DevApp/Gs.DevApp/Resources/legendnone2_32x32.png
Binary files differ
diff --git a/DevApp/Gs.DevApp/Resources/linktoprevious_16x16.png b/DevApp/Gs.DevApp/Resources/linktoprevious_16x16.png
new file mode 100644
index 0000000..649e9ae
--- /dev/null
+++ b/DevApp/Gs.DevApp/Resources/linktoprevious_16x16.png
Binary files differ
diff --git a/DevApp/Gs.DevApp/Resources/listmultilevel_16x16.png b/DevApp/Gs.DevApp/Resources/listmultilevel_16x16.png
new file mode 100644
index 0000000..f650d89
--- /dev/null
+++ b/DevApp/Gs.DevApp/Resources/listmultilevel_16x16.png
Binary files differ
diff --git a/DevApp/Gs.DevApp/Resources/removegroupfooter_16x16.png b/DevApp/Gs.DevApp/Resources/removegroupfooter_16x16.png
new file mode 100644
index 0000000..a51c5f4
--- /dev/null
+++ b/DevApp/Gs.DevApp/Resources/removegroupfooter_16x16.png
Binary files differ
diff --git a/DevApp/Gs.DevApp/Resources/removegroupfooter_32x32.png b/DevApp/Gs.DevApp/Resources/removegroupfooter_32x32.png
new file mode 100644
index 0000000..d7ac0c4
--- /dev/null
+++ b/DevApp/Gs.DevApp/Resources/removegroupfooter_32x32.png
Binary files differ
diff --git a/DevApp/Gs.DevApp/Resources/renamedatasource_16x16.png b/DevApp/Gs.DevApp/Resources/renamedatasource_16x16.png
new file mode 100644
index 0000000..d0301ad
--- /dev/null
+++ b/DevApp/Gs.DevApp/Resources/renamedatasource_16x16.png
Binary files differ
diff --git a/DevApp/Gs.DevApp/Resources/renamedatasource_32x32.png b/DevApp/Gs.DevApp/Resources/renamedatasource_32x32.png
new file mode 100644
index 0000000..16659b7
--- /dev/null
+++ b/DevApp/Gs.DevApp/Resources/renamedatasource_32x32.png
Binary files differ
diff --git a/DevApp/Gs.DevApp/Resources/show_16x16.png b/DevApp/Gs.DevApp/Resources/show_16x16.png
new file mode 100644
index 0000000..0c1ab27
--- /dev/null
+++ b/DevApp/Gs.DevApp/Resources/show_16x16.png
Binary files differ
diff --git a/DevApp/Gs.DevApp/Resources/show_32x32.png b/DevApp/Gs.DevApp/Resources/show_32x32.png
new file mode 100644
index 0000000..3635e38
--- /dev/null
+++ b/DevApp/Gs.DevApp/Resources/show_32x32.png
Binary files differ
diff --git a/DevApp/Gs.DevApp/Resources/task_32x32.png b/DevApp/Gs.DevApp/Resources/task_32x32.png
new file mode 100644
index 0000000..3fc5129
--- /dev/null
+++ b/DevApp/Gs.DevApp/Resources/task_32x32.png
Binary files differ
diff --git a/DevApp/Gs.DevApp/Resources/trackingchanges_allmarkup_16x16.png b/DevApp/Gs.DevApp/Resources/trackingchanges_allmarkup_16x16.png
new file mode 100644
index 0000000..0055ad4
--- /dev/null
+++ b/DevApp/Gs.DevApp/Resources/trackingchanges_allmarkup_16x16.png
Binary files differ
diff --git a/DevApp/Gs.DevApp/Resources/trackingchanges_allmarkup_32x32.png b/DevApp/Gs.DevApp/Resources/trackingchanges_allmarkup_32x32.png
new file mode 100644
index 0000000..5f7c719
--- /dev/null
+++ b/DevApp/Gs.DevApp/Resources/trackingchanges_allmarkup_32x32.png
Binary files differ
diff --git a/DevApp/Gs.DevApp/Resources/trackingchanges_trackchanges_16x16.png b/DevApp/Gs.DevApp/Resources/trackingchanges_trackchanges_16x16.png
new file mode 100644
index 0000000..064d382
--- /dev/null
+++ b/DevApp/Gs.DevApp/Resources/trackingchanges_trackchanges_16x16.png
Binary files differ
diff --git a/DevApp/Gs.DevApp/Resources/trackingchanges_trackchanges_32x32.png b/DevApp/Gs.DevApp/Resources/trackingchanges_trackchanges_32x32.png
new file mode 100644
index 0000000..8f5ff70
--- /dev/null
+++ b/DevApp/Gs.DevApp/Resources/trackingchanges_trackchanges_32x32.png
Binary files differ
diff --git a/DevApp/Gs.DevApp/Resources/user_16x16.png b/DevApp/Gs.DevApp/Resources/user_16x16.png
new file mode 100644
index 0000000..a683dec
--- /dev/null
+++ b/DevApp/Gs.DevApp/Resources/user_16x16.png
Binary files differ
diff --git a/DevApp/Gs.DevApp/Resources/usergroup_32x32.png b/DevApp/Gs.DevApp/Resources/usergroup_32x32.png
new file mode 100644
index 0000000..d97c9df
--- /dev/null
+++ b/DevApp/Gs.DevApp/Resources/usergroup_32x32.png
Binary files differ
diff --git a/DevApp/Gs.DevApp/TestForm/FluentDesignForm1.Designer.cs b/DevApp/Gs.DevApp/TestForm/FluentDesignForm1.Designer.cs
new file mode 100644
index 0000000..cb226f6
--- /dev/null
+++ b/DevApp/Gs.DevApp/TestForm/FluentDesignForm1.Designer.cs
@@ -0,0 +1,105 @@
+锘�
+namespace Gs.DevApp.TestForm
+{
+ partial class FluentDesignForm1
+ {
+ /// <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()
+ {
+ this.components = new System.ComponentModel.Container();
+ this.fluentDesignFormContainer1 = new DevExpress.XtraBars.FluentDesignSystem.FluentDesignFormContainer();
+ this.accordionControl1 = new DevExpress.XtraBars.Navigation.AccordionControl();
+ this.fluentDesignFormControl1 = new DevExpress.XtraBars.FluentDesignSystem.FluentDesignFormControl();
+ this.accordionControlElement1 = new DevExpress.XtraBars.Navigation.AccordionControlElement();
+ this.fluentFormDefaultManager1 = new DevExpress.XtraBars.FluentDesignSystem.FluentFormDefaultManager(this.components);
+ ((System.ComponentModel.ISupportInitialize)(this.accordionControl1)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.fluentDesignFormControl1)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.fluentFormDefaultManager1)).BeginInit();
+ this.SuspendLayout();
+ //
+ // fluentDesignFormContainer1
+ //
+ this.fluentDesignFormContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.fluentDesignFormContainer1.Location = new System.Drawing.Point(260, 46);
+ this.fluentDesignFormContainer1.Name = "fluentDesignFormContainer1";
+ this.fluentDesignFormContainer1.Size = new System.Drawing.Size(431, 427);
+ this.fluentDesignFormContainer1.TabIndex = 0;
+ //
+ // accordionControl1
+ //
+ this.accordionControl1.Dock = System.Windows.Forms.DockStyle.Left;
+ this.accordionControl1.Elements.AddRange(new DevExpress.XtraBars.Navigation.AccordionControlElement[] {
+ this.accordionControlElement1});
+ this.accordionControl1.Location = new System.Drawing.Point(0, 46);
+ this.accordionControl1.Name = "accordionControl1";
+ this.accordionControl1.ScrollBarMode = DevExpress.XtraBars.Navigation.ScrollBarMode.Touch;
+ this.accordionControl1.Size = new System.Drawing.Size(260, 427);
+ this.accordionControl1.TabIndex = 1;
+ this.accordionControl1.ViewType = DevExpress.XtraBars.Navigation.AccordionControlViewType.HamburgerMenu;
+ //
+ // fluentDesignFormControl1
+ //
+ this.fluentDesignFormControl1.Dock = System.Windows.Forms.DockStyle.Top;
+ this.fluentDesignFormControl1.FluentDesignForm = this;
+ this.fluentDesignFormControl1.Location = new System.Drawing.Point(0, 0);
+ this.fluentDesignFormControl1.Manager = this.fluentFormDefaultManager1;
+ this.fluentDesignFormControl1.Name = "fluentDesignFormControl1";
+ this.fluentDesignFormControl1.Size = new System.Drawing.Size(691, 46);
+ this.fluentDesignFormControl1.TabIndex = 2;
+ this.fluentDesignFormControl1.TabStop = false;
+ //
+ // accordionControlElement1
+ //
+ this.accordionControlElement1.Name = "accordionControlElement1";
+ this.accordionControlElement1.Text = "Element1";
+ //
+ // Form1
+ //
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(691, 473);
+ this.ControlContainer = this.fluentDesignFormContainer1;
+ this.Controls.Add(this.fluentDesignFormContainer1);
+ this.Controls.Add(this.accordionControl1);
+ this.Controls.Add(this.fluentDesignFormControl1);
+ this.FluentDesignFormControl = this.fluentDesignFormControl1;
+ this.Name = "FluentDesignForm1";
+ this.NavigationControl = this.accordionControl1;
+ this.Text = "FluentDesignForm1";
+ ((System.ComponentModel.ISupportInitialize)(this.accordionControl1)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.fluentDesignFormControl1)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.fluentFormDefaultManager1)).EndInit();
+ this.ResumeLayout(false);
+
+ }
+
+ #endregion
+ private DevExpress.XtraBars.FluentDesignSystem.FluentDesignFormContainer fluentDesignFormContainer1;
+ private DevExpress.XtraBars.Navigation.AccordionControl accordionControl1;
+ private DevExpress.XtraBars.FluentDesignSystem.FluentDesignFormControl fluentDesignFormControl1;
+ private DevExpress.XtraBars.Navigation.AccordionControlElement accordionControlElement1;
+ private DevExpress.XtraBars.FluentDesignSystem.FluentFormDefaultManager fluentFormDefaultManager1;
+ }
+}
\ No newline at end of file
diff --git a/DevApp/Gs.DevApp/TestForm/FluentDesignForm1.cs b/DevApp/Gs.DevApp/TestForm/FluentDesignForm1.cs
new file mode 100644
index 0000000..9957245
--- /dev/null
+++ b/DevApp/Gs.DevApp/TestForm/FluentDesignForm1.cs
@@ -0,0 +1,20 @@
+锘縰sing DevExpress.XtraBars;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Windows.Forms;
+
+namespace Gs.DevApp.TestForm
+{
+ public partial class FluentDesignForm1 : DevExpress.XtraBars.FluentDesignSystem.FluentDesignForm
+ {
+ public FluentDesignForm1()
+ {
+ InitializeComponent();
+ }
+ }
+}
diff --git a/DevApp/Gs.DevApp/TestForm/ToolbarForm1.Designer.cs b/DevApp/Gs.DevApp/TestForm/ToolbarForm1.Designer.cs
new file mode 100644
index 0000000..09e834f
--- /dev/null
+++ b/DevApp/Gs.DevApp/TestForm/ToolbarForm1.Designer.cs
@@ -0,0 +1,140 @@
+锘�
+namespace Gs.DevApp.TestForm
+{
+ partial class ToolbarForm1
+ {
+ /// <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()
+ {
+ this.components = new System.ComponentModel.Container();
+ this.barManager1 = new DevExpress.XtraBars.BarManager(this.components);
+ this.barDockControlTop = new DevExpress.XtraBars.BarDockControl();
+ this.barDockControlBottom = new DevExpress.XtraBars.BarDockControl();
+ this.barDockControlLeft = new DevExpress.XtraBars.BarDockControl();
+ this.barDockControlRight = new DevExpress.XtraBars.BarDockControl();
+ this.bar1 = new DevExpress.XtraBars.Bar();
+ this.bar2 = new DevExpress.XtraBars.Bar();
+ this.bar3 = new DevExpress.XtraBars.Bar();
+ ((System.ComponentModel.ISupportInitialize)(this.barManager1)).BeginInit();
+ this.SuspendLayout();
+ //
+ // barManager1
+ //
+ this.barManager1.Bars.AddRange(new DevExpress.XtraBars.Bar[] {
+ this.bar1,
+ this.bar2,
+ this.bar3});
+ this.barManager1.DockControls.Add(this.barDockControlTop);
+ this.barManager1.DockControls.Add(this.barDockControlBottom);
+ this.barManager1.DockControls.Add(this.barDockControlLeft);
+ this.barManager1.DockControls.Add(this.barDockControlRight);
+ this.barManager1.Form = this;
+ this.barManager1.MainMenu = this.bar2;
+ this.barManager1.MaxItemId = 0;
+ this.barManager1.StatusBar = this.bar3;
+ //
+ // barDockControlTop
+ //
+ this.barDockControlTop.CausesValidation = false;
+ this.barDockControlTop.Dock = System.Windows.Forms.DockStyle.Top;
+ this.barDockControlTop.Location = new System.Drawing.Point(0, 0);
+ this.barDockControlTop.Size = new System.Drawing.Size(632, 51);
+ //
+ // barDockControlBottom
+ //
+ this.barDockControlBottom.CausesValidation = false;
+ this.barDockControlBottom.Dock = System.Windows.Forms.DockStyle.Bottom;
+ this.barDockControlBottom.Location = new System.Drawing.Point(0, 255);
+ this.barDockControlBottom.Size = new System.Drawing.Size(632, 23);
+ //
+ // barDockControlLeft
+ //
+ this.barDockControlLeft.CausesValidation = false;
+ this.barDockControlLeft.Dock = System.Windows.Forms.DockStyle.Left;
+ this.barDockControlLeft.Location = new System.Drawing.Point(0, 51);
+ this.barDockControlLeft.Size = new System.Drawing.Size(0, 204);
+ //
+ // barDockControlRight
+ //
+ this.barDockControlRight.CausesValidation = false;
+ this.barDockControlRight.Dock = System.Windows.Forms.DockStyle.Right;
+ this.barDockControlRight.Location = new System.Drawing.Point(632, 51);
+ this.barDockControlRight.Size = new System.Drawing.Size(0, 204);
+ //
+ // bar1
+ //
+ this.bar1.BarName = "Tools";
+ this.bar1.DockCol = 0;
+ this.bar1.DockStyle = DevExpress.XtraBars.BarDockStyle.Top;
+ this.bar1.Text = "Tools";
+ //
+ // bar2
+ //
+ this.bar2.BarName = "Main menu";
+ this.bar2.DockCol = 0;
+ this.bar2.DockStyle = DevExpress.XtraBars.BarDockStyle.Top;
+ this.bar2.OptionsBar.MultiLine = true;
+ this.bar2.OptionsBar.UseWholeRow = true;
+ this.bar2.Text = "Main menu";
+ //
+ // bar3
+ //
+ this.bar3.BarName = "Status bar";
+ this.bar3.CanDockStyle = DevExpress.XtraBars.BarCanDockStyle.Bottom;
+ this.bar3.DockCol = 0;
+ this.bar3.DockStyle = DevExpress.XtraBars.BarDockStyle.Bottom;
+ this.bar3.OptionsBar.AllowQuickCustomization = false;
+ this.bar3.OptionsBar.DrawDragBorder = false;
+ this.bar3.OptionsBar.UseWholeRow = true;
+ this.bar3.Text = "Status bar";
+ //
+ // Form1
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(632, 278);
+ this.Controls.Add(this.barDockControlLeft);
+ this.Controls.Add(this.barDockControlRight);
+ this.Controls.Add(this.barDockControlBottom);
+ this.Controls.Add(this.barDockControlTop);
+ this.Text = "ToolbarForm1";
+ ((System.ComponentModel.ISupportInitialize)(this.barManager1)).EndInit();
+ this.ResumeLayout(false);
+
+ }
+
+ #endregion
+
+ private DevExpress.XtraBars.BarManager barManager1;
+ private DevExpress.XtraBars.Bar bar1;
+ private DevExpress.XtraBars.Bar bar2;
+ private DevExpress.XtraBars.Bar bar3;
+ private DevExpress.XtraBars.BarDockControl barDockControlTop;
+ private DevExpress.XtraBars.BarDockControl barDockControlBottom;
+ private DevExpress.XtraBars.BarDockControl barDockControlLeft;
+ private DevExpress.XtraBars.BarDockControl barDockControlRight;
+ }
+}
\ No newline at end of file
diff --git a/DevApp/Gs.DevApp/TestForm/ToolbarForm1.cs b/DevApp/Gs.DevApp/TestForm/ToolbarForm1.cs
new file mode 100644
index 0000000..8ff9464
--- /dev/null
+++ b/DevApp/Gs.DevApp/TestForm/ToolbarForm1.cs
@@ -0,0 +1,21 @@
+锘縰sing DevExpress.XtraBars;
+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 Gs.DevApp.TestForm
+{
+ public partial class ToolbarForm1 : DevExpress.XtraEditors.XtraForm
+ {
+ public ToolbarForm1()
+ {
+ InitializeComponent();
+ }
+ }
+}
\ No newline at end of file
diff --git a/DevApp/Gs.DevApp/ToolBox/LogHelper.cs b/DevApp/Gs.DevApp/ToolBox/LogHelper.cs
new file mode 100644
index 0000000..4378e51
--- /dev/null
+++ b/DevApp/Gs.DevApp/ToolBox/LogHelper.cs
@@ -0,0 +1,47 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Gs.DevApp.ToolBox
+{
+ public class LogHelper
+ {
+ //鍒涘缓鏃ュ織鐩綍
+ private static string path = AppContext.BaseDirectory + System.Configuration.ConfigurationSettings.AppSettings.Get("LogPath").ToString();
+ /**
+ * 鍚戞棩蹇楁枃浠跺啓鍏ヨ皟璇曚俊鎭�
+ * @param className 绫诲悕
+ * @param content 鍐欏叆鍐呭
+ */
+ public static void Debug(string className, string content)
+ {
+ WriteLog("DEBUG", className, content);
+ }
+
+ /**
+ * 瀹為檯鐨勫啓鏃ュ織鎿嶄綔
+ * @param type 鏃ュ織璁板綍绫诲瀷
+ * @param className 绫诲悕
+ * @param content 鍐欏叆鍐呭
+ */
+ protected static void WriteLog(string type, string className, string content)
+ {
+ if (!Directory.Exists(path))//濡傛灉鏃ュ織鐩綍涓嶅瓨鍦ㄥ氨鍒涘缓
+ {
+ Directory.CreateDirectory(path);
+ }
+ string time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff");//鑾峰彇褰撳墠绯荤粺鏃堕棿
+ string filename = path + "/" + DateTime.Now.ToString("yyyy-MM-dd") + ".log";//鐢ㄦ棩鏈熷鏃ュ織鏂囦欢鍛藉悕
+ //鍒涘缓鎴栨墦寮�鏃ュ織鏂囦欢锛屽悜鏃ュ織鏂囦欢鏈熬杩藉姞璁板綍
+ StreamWriter mySw = File.AppendText(filename);
+ //鍚戞棩蹇楁枃浠跺啓鍏ュ唴瀹�
+ string write_content = time + " " + type + " " + className + ": " + content;
+ mySw.WriteLine(write_content);
+ //鍏抽棴鏃ュ織鏂囦欢
+ mySw.Close();
+ }
+ }
+}
diff --git a/DevApp/Gs.DevApp/ToolBox/Msg.cs b/DevApp/Gs.DevApp/ToolBox/Msg.cs
new file mode 100644
index 0000000..9e8f0f7
--- /dev/null
+++ b/DevApp/Gs.DevApp/ToolBox/Msg.cs
@@ -0,0 +1,100 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace Gs.DevApp.ToolBox
+{
+ /// <summary>
+ /// 绯荤粺娑堟伅鎻愮ず绐椾綋
+ /// </summary>
+ public class Msg
+ {
+ /// <summary>
+ /// 鎵撳紑瀵硅瘽妗�
+ /// </summary>
+ /// <param name="msg">鏈瀵硅瘽鍐呭</param>
+ /// <returns></returns>
+ public static bool AskQuestion(string msg)
+ {
+ DialogResult r;
+ r = MessageBox.Show(msg, "纭",
+ MessageBoxButtons.YesNo,
+ MessageBoxIcon.Question,
+ MessageBoxDefaultButton.Button2);
+ return r == DialogResult.Yes;
+ }
+
+ /// <summary>
+ /// 閿欒娑堟伅鎻愮ず妗�
+ /// </summary>
+ /// <param name="msg">閿欒娑堟伅鍐呭</param>
+ public static void ShowError(string msg)
+ {
+ MessageBox.Show(msg, "璀﹀憡",
+ MessageBoxButtons.OK,
+ MessageBoxIcon.Hand,
+ MessageBoxDefaultButton.Button1);
+ }
+
+ /// <summary>
+ /// 鏄剧ず绯荤粺寮傚父
+ /// </summary>
+ /// <param name="e">绯荤粺寮傚父</param>
+ public static void ShowException(Exception e)
+ {
+ var s = e.Message;
+ var innerMsg = string.Empty;
+
+ if (e.InnerException != null)
+ {
+ innerMsg = e.InnerException.Message;
+ s += "\n" + innerMsg;
+ }
+
+ Warning(s);
+ }
+
+ public static void ShowException(Exception ex, string customMessage)
+ {
+ //if (ex is CustomException)
+ //{
+ // ShowException(ex);
+ //}
+ //else if (customMessage != "")
+ //{
+ // Warning(customMessage);
+ //}
+ //else
+ //{
+ // Warning(ex.Message);
+ //}
+ }
+
+ /// <summary>
+ /// 淇℃伅鎻愮ず妗�
+ /// </summary>
+ /// <param name="msg">鏈鏄剧ず鐨勬秷鎭�</param>
+ public static void ShowInformation(string msg)
+ {
+ MessageBox.Show(msg, "淇℃伅",
+ MessageBoxButtons.OK,
+ MessageBoxIcon.Asterisk,
+ MessageBoxDefaultButton.Button1);
+ }
+
+ /// <summary>
+ /// 璀﹀憡鎻愮ず妗�
+ /// </summary>
+ /// <param name="msg">璀﹀憡鍐呭</param>
+ public static void Warning(string msg)
+ {
+ MessageBox.Show(msg, "璀﹀憡",
+ MessageBoxButtons.OK,
+ MessageBoxIcon.Exclamation,
+ MessageBoxDefaultButton.Button1);
+ }
+ }
+}
diff --git a/DevApp/Gs.DevApp/ToolBox/Utility.cs b/DevApp/Gs.DevApp/ToolBox/Utility.cs
new file mode 100644
index 0000000..c55e1e3
--- /dev/null
+++ b/DevApp/Gs.DevApp/ToolBox/Utility.cs
@@ -0,0 +1,131 @@
+锘縰sing Newtonsoft.Json.Linq;
+using System;
+using System.Collections.Generic;
+using System.Data;
+using System.IO;
+using System.Linq;
+using System.Net;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+using Gs.DevApp.ToolBox;
+using System.Resources;
+using System.Drawing;
+using Newtonsoft.Json;
+using Gs.DevApp.Models;
+
+namespace Gs.DevApp.ToolBox
+{
+ /// <summary>
+ /// 閫氱敤绫�
+ /// </summary>
+ public class Utility
+ {
+ private static string WebApiUrl = System.Configuration.ConfigurationSettings.AppSettings.Get("WebApiUrl").ToString();
+
+ /// <summary>
+ /// httpPost璁块棶鏈嶅姟
+ /// </summary>
+ /// <param name="url">鏈嶅姟鍦板潃</param>
+ /// <param name="meth">鏂规硶鍚嶇О</param>
+ /// <param name="param">鍙傛暟</param>
+ /// <returns></returns>
+ public static string HttpPost(string url, string meth, string param)
+ {
+ if (string.IsNullOrEmpty(url))
+ url = WebApiUrl;
+ url += meth;
+ HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
+ request.Method = "POST";
+ request.ContentType = "application/json";
+ request.Headers.Add("token", GetBasicAuthTicket());
+ request.Accept = "*/*";
+ request.Timeout = 15000;
+ request.AllowAutoRedirect = false;
+ StreamWriter requestStream = null;
+ WebResponse response = null;
+ string responseStr = null;
+ try
+ {
+ requestStream = new StreamWriter(request.GetRequestStream());
+ requestStream.Write(param);
+ requestStream.Close();
+ response = request.GetResponse();
+ if (response != null)
+ {
+ StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
+ responseStr = reader.ReadToEnd();
+ //File.WriteAllText(Server.MapPath("~/") + @"\test.txt", responseStr);
+ reader.Close();
+ }
+ }
+ catch (Exception ex)
+ {
+ throw ex;
+ }
+ finally
+ {
+ request = null;
+ requestStream = null;
+ response = null;
+ }
+ return responseStr;
+ }
+ /// <summary>
+ /// 鏍规嵁鍥剧墖鍚嶈鍙栬祫婧愭枃浠�,涓嶅甫鍚庣紑鍚�
+ /// </summary>
+ /// <param name="imageName"></param>
+ /// <returns></returns>
+ public static Image GetImgFromResource(string imageName)
+ {
+ // 鑾峰彇褰撳墠绋嬪簭闆�
+ Assembly assembly = Assembly.GetExecutingAssembly();
+ // 鍒涘缓璧勬簮绠$悊鍣ㄦ潵璁块棶璧勬簮
+ ResourceManager resourceManager = new ResourceManager("GsDxApp.Properties.Resources", assembly);
+ // 灏濊瘯鑾峰彇鍥剧墖璧勬簮
+ Image image = resourceManager.GetObject(imageName) as Image;
+ if (image != null)
+ {
+ return image;
+ }
+ else
+ {
+ return null;
+ }
+ }
+ /// <summary>
+ /// 璇诲彇token
+ /// </summary>
+ /// <returns></returns>
+ public static string GetBasicAuthTicket()
+ {
+ string token = Guid.NewGuid().ToString();
+ return token;
+ }
+ /// <summary>
+ /// 鏍囧噯json涓茶繑鍥� table锛�
+ /// </summary>
+ /// <param name="strReturn"></param>
+ /// <returns></returns>
+ public static ReturnModel<PageListModel> GetTableByJson(string strReturn)
+ {
+ ReturnModel<PageListModel> rto = new ReturnModel<PageListModel>();
+ JObject json = JObject.Parse(strReturn);
+ rto.rtnCode = json["rtnCode"].ToString();
+ rto.rtnMsg = json["rtnMsg"].ToString();
+ rto.rtnData = new PageListModel();
+ rto.rtnData.pages = int.Parse(json["rtnData"]["pages"].ToString());
+ rto.rtnData.total = int.Parse(json["rtnData"]["total"].ToString());
+ rto.rtnData.everyPageSize = int.Parse(json["rtnData"]["everyPageSize"].ToString());
+ JArray array = new JArray();
+ var d = json["rtnData"]["list"];
+ foreach (var a in d)
+ {
+ array.Add(a);
+ }
+ DataTable dt = JsonConvert.DeserializeObject<DataTable>(array.ToString());
+ rto.rtnData.list = dt;
+ return rto;
+ }
+ }
+}
diff --git a/DevApp/Gs.DevApp/UserControl/ShowDialogForm.cs b/DevApp/Gs.DevApp/UserControl/ShowDialogForm.cs
new file mode 100644
index 0000000..6234de0
--- /dev/null
+++ b/DevApp/Gs.DevApp/UserControl/ShowDialogForm.cs
@@ -0,0 +1,172 @@
+锘縰sing System.ComponentModel;
+
+namespace Gs.DevApp.UserControl
+{
+ public partial class ShowDialogForm : DevExpress.XtraEditors.XtraForm
+ {
+ #region Fields & Properties
+ /// <summary>
+ /// 鏍囬
+ /// </summary>
+ private string caption;
+
+ public string Caption
+ {
+ get { return caption; }
+ set { caption = value; }
+ }
+ /// <summary>
+ /// 娑堟伅
+ /// </summary>
+ private string message;
+
+ public string Message
+ {
+ get { return message; }
+ set { message = value; }
+ }
+ /// <summary>
+ /// 鎻忚堪
+ /// </summary>
+ private string content;
+
+ public string Content
+ {
+ get { return content; }
+ set { content = value; }
+ }
+ /// <summary>
+ /// 杩涘害鏉℃渶灏忓��
+ /// </summary>
+ private int minProcess = 1;
+
+ public int MinProcess
+ {
+ get { return minProcess; }
+ set { minProcess = value; }
+ }
+ /// <summary>
+ /// 杩涘害鏉℃渶澶у��
+ /// </summary>
+ private int maxProcess = 100;
+
+ public int MaxProcess
+ {
+ get { return maxProcess; }
+ set { maxProcess = value; }
+ }
+ #endregion
+
+ #region Constructed Function
+ public ShowDialogForm()
+ {
+ InitializeComponent();
+ }
+ /// <summary>
+ /// 璁剧疆
+ /// </summary>
+ /// <param name="_caption">鎻愮ず</param>
+ public ShowDialogForm(string _caption)
+ : this(_caption, "", "", 100)
+ {
+ }
+
+ /// <summary>
+ /// 璁剧疆
+ /// </summary>
+ /// <param name="_caption"></param>
+ /// <param name="_message"></param>
+ public ShowDialogForm(string _caption,string _message)
+ : this(_caption, _message, "",100)
+ {
+ }
+
+ /// <summary>
+ /// 璁剧疆
+ /// </summary>
+ /// <param name="_caption"></param>
+ /// <param name="_message"></param>
+ /// <param name="_content"></param>
+ public ShowDialogForm(string _caption, string _message,string _content)
+ : this(_caption, _message, _content, 100)
+ {
+ }
+
+ /// <summary>
+ /// 璁剧疆
+ /// </summary>
+ /// <param name="_caption">鎻愮ず</param>
+ /// <param name="_message">娑堟伅鍐呭</param>
+ /// <param name="_content">璇︾粏鎻忚堪</param>
+ /// <param name="_maxProcess">杩涘害鏉℃渶澶у��</param>
+ public ShowDialogForm(string _caption, string _message,string _content,int _maxProcess)
+ : this()
+ {
+ this.Caption = "";
+ this.Message = "";
+ this.Content = "";
+
+ this.Caption = _caption == "" ? "鎻愮ず" : _caption;
+ this.Message = _message == "" ? "姝e湪鍔犺浇锛岃绋嶅悗......" : _message;
+ this.Content = _content;
+ this.maxProcess = _maxProcess > this.MinProcess ? _maxProcess : MinProcess;
+
+ lblCaption.Text = this.Caption;
+ lblMessage.Text = this.Message;
+ lblContent.Text = this.Content;
+ progressShow.Properties.Minimum = MinProcess;
+ progressShow.Properties.Maximum = MaxProcess;
+ progressShow.Properties.Step = 1;
+ progressShow.PerformStep();
+
+ this.ShowInTaskbar = false;
+ this.TopMost = true;
+ this.Show();
+ this.Refresh();
+ }
+ #endregion
+
+ #region Methods
+ /// <summary>
+ /// 璁剧疆鎻愮ず
+ /// </summary>
+ /// <param name="newCaption"></param>
+ public void SetCaption(string newCaption)
+ {
+ this.Caption = newCaption;
+ lblCaption.Text = this.Caption;
+ progressShow.PerformStep();
+ this.Refresh();
+ }
+ /// <summary>
+ /// 璁剧疆娑堟伅
+ /// </summary>
+ /// <param name="newMessage"></param>
+ public void SetMessage(string newMessage)
+ {
+ this.Message = newMessage;
+ lblMessage.Text = this.Message;
+ progressShow.PerformStep();
+ this.Refresh();
+ }
+ /// <summary>
+ /// 璁剧疆鎻忚堪
+ /// </summary>
+ /// <param name="newContent"></param>
+ public void SetContent(string newContent)
+ {
+ this.Content = newContent;
+ lblContent.Text = this.Content;
+ progressShow.PerformStep();
+ this.Refresh();
+ }
+ #endregion
+
+ #region Events
+ protected override void OnClosing(CancelEventArgs e)
+ {
+ base.OnClosing(e);
+ }
+ #endregion
+ }
+}
\ No newline at end of file
diff --git a/DevApp/Gs.DevApp/UserControl/ShowDialogForm.designer.cs b/DevApp/Gs.DevApp/UserControl/ShowDialogForm.designer.cs
new file mode 100644
index 0000000..f163c4c
--- /dev/null
+++ b/DevApp/Gs.DevApp/UserControl/ShowDialogForm.designer.cs
@@ -0,0 +1,143 @@
+锘縩amespace Gs.DevApp.UserControl
+{
+ partial class ShowDialogForm
+ {
+ /// <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()
+ {
+ this.panelControl1 = new DevExpress.XtraEditors.PanelControl();
+ this.lblCaption = new DevExpress.XtraEditors.LabelControl();
+ this.lblMessage = new DevExpress.XtraEditors.LabelControl();
+ this.lblContent = new DevExpress.XtraEditors.LabelControl();
+ this.progressShow = new DevExpress.XtraEditors.ProgressBarControl();
+ this.panelControl2 = new DevExpress.XtraEditors.PanelControl();
+ ((System.ComponentModel.ISupportInitialize)(this.panelControl1)).BeginInit();
+ this.panelControl1.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.progressShow.Properties)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.panelControl2)).BeginInit();
+ this.panelControl2.SuspendLayout();
+ this.SuspendLayout();
+ //
+ // panelControl1
+ //
+ this.panelControl1.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.Style3D;
+ this.panelControl1.Controls.Add(this.lblCaption);
+ this.panelControl1.Dock = System.Windows.Forms.DockStyle.Top;
+ this.panelControl1.Location = new System.Drawing.Point(0, 0);
+ this.panelControl1.Name = "panelControl1";
+ this.panelControl1.Size = new System.Drawing.Size(436, 34);
+ this.panelControl1.TabIndex = 0;
+ //
+ // lblCaption
+ //
+ this.lblCaption.Location = new System.Drawing.Point(5, 9);
+ this.lblCaption.Name = "lblCaption";
+ this.lblCaption.Size = new System.Drawing.Size(41, 14);
+ this.lblCaption.TabIndex = 0;
+ this.lblCaption.Text = "Caption";
+ //
+ // lblMessage
+ //
+ this.lblMessage.Location = new System.Drawing.Point(24, 7);
+ this.lblMessage.Name = "lblMessage";
+ this.lblMessage.Size = new System.Drawing.Size(46, 14);
+ this.lblMessage.TabIndex = 2;
+ this.lblMessage.Text = "Message";
+ //
+ // lblContent
+ //
+ this.lblContent.Location = new System.Drawing.Point(24, 31);
+ this.lblContent.Name = "lblContent";
+ this.lblContent.Size = new System.Drawing.Size(45, 14);
+ this.lblContent.TabIndex = 3;
+ this.lblContent.Text = "Content";
+ //
+ // progressShow
+ //
+ this.progressShow.EditValue = 1;
+ this.progressShow.Location = new System.Drawing.Point(24, 59);
+ this.progressShow.Name = "progressShow";
+ this.progressShow.Properties.Appearance.BackColor = System.Drawing.Color.Transparent;
+ this.progressShow.Properties.Appearance.ForeColor = System.Drawing.Color.Black;
+ this.progressShow.Properties.EndColor = System.Drawing.Color.Empty;
+ this.progressShow.Properties.LookAndFeel.SkinName = "Blue";
+ this.progressShow.Properties.LookAndFeel.UseDefaultLookAndFeel = false;
+ this.progressShow.Properties.LookAndFeel.UseWindowsXPTheme = true;
+ this.progressShow.Properties.ReadOnly = true;
+ this.progressShow.Properties.ShowTitle = true;
+ this.progressShow.Properties.StartColor = System.Drawing.Color.Empty;
+ this.progressShow.Properties.Step = 1;
+ this.progressShow.Size = new System.Drawing.Size(400, 15);
+ this.progressShow.TabIndex = 4;
+ //
+ // panelControl2
+ //
+ this.panelControl2.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.panelControl2.Controls.Add(this.lblContent);
+ this.panelControl2.Controls.Add(this.progressShow);
+ this.panelControl2.Controls.Add(this.lblMessage);
+ this.panelControl2.Location = new System.Drawing.Point(0, 38);
+ this.panelControl2.Name = "panelControl2";
+ this.panelControl2.Size = new System.Drawing.Size(436, 83);
+ this.panelControl2.TabIndex = 5;
+ //
+ // ShowDialogForm
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 14F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(436, 124);
+ this.Controls.Add(this.panelControl2);
+ this.Controls.Add(this.panelControl1);
+ this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
+ this.MaximizeBox = false;
+ this.MinimizeBox = false;
+ this.Name = "ShowDialogForm";
+ this.ShowIcon = false;
+ this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
+ this.Text = "ShowDialogForm";
+ ((System.ComponentModel.ISupportInitialize)(this.panelControl1)).EndInit();
+ this.panelControl1.ResumeLayout(false);
+ this.panelControl1.PerformLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.progressShow.Properties)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.panelControl2)).EndInit();
+ this.panelControl2.ResumeLayout(false);
+ this.panelControl2.PerformLayout();
+ this.ResumeLayout(false);
+
+ }
+
+ #endregion
+
+ private DevExpress.XtraEditors.PanelControl panelControl1;
+ private DevExpress.XtraEditors.LabelControl lblCaption;
+ private DevExpress.XtraEditors.LabelControl lblMessage;
+ private DevExpress.XtraEditors.LabelControl lblContent;
+ private DevExpress.XtraEditors.ProgressBarControl progressShow;
+ private DevExpress.XtraEditors.PanelControl panelControl2;
+ }
+}
\ No newline at end of file
diff --git a/DevApp/Gs.DevApp/UserControl/ShowDialogForm.resx b/DevApp/Gs.DevApp/UserControl/ShowDialogForm.resx
new file mode 100644
index 0000000..1af7de1
--- /dev/null
+++ b/DevApp/Gs.DevApp/UserControl/ShowDialogForm.resx
@@ -0,0 +1,120 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<root>
+ <!--
+ Microsoft ResX Schema
+
+ Version 2.0
+
+ The primary goals of this format is to allow a simple XML format
+ that is mostly human readable. The generation and parsing of the
+ various data types are done through the TypeConverter classes
+ associated with the data types.
+
+ Example:
+
+ ... ado.net/XML headers & schema ...
+ <resheader name="resmimetype">text/microsoft-resx</resheader>
+ <resheader name="version">2.0</resheader>
+ <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+ <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+ <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+ <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+ <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+ <value>[base64 mime encoded serialized .NET Framework object]</value>
+ </data>
+ <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+ <comment>This is a comment</comment>
+ </data>
+
+ There are any number of "resheader" rows that contain simple
+ name/value pairs.
+
+ Each data row contains a name, and value. The row also contains a
+ type or mimetype. Type corresponds to a .NET class that support
+ text/value conversion through the TypeConverter architecture.
+ Classes that don't support this are serialized and stored with the
+ mimetype set.
+
+ The mimetype is used for serialized objects, and tells the
+ ResXResourceReader how to depersist the object. This is currently not
+ extensible. For a given mimetype the value must be set accordingly:
+
+ Note - application/x-microsoft.net.object.binary.base64 is the format
+ that the ResXResourceWriter will generate, however the reader can
+ read any of the formats listed below.
+
+ mimetype: application/x-microsoft.net.object.binary.base64
+ value : The object must be serialized with
+ : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+ : and then encoded with base64 encoding.
+
+ mimetype: application/x-microsoft.net.object.soap.base64
+ value : The object must be serialized with
+ : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+ : and then encoded with base64 encoding.
+
+ mimetype: application/x-microsoft.net.object.bytearray.base64
+ value : The object must be serialized into a byte array
+ : using a System.ComponentModel.TypeConverter
+ : and then encoded with base64 encoding.
+ -->
+ <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+ <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+ <xsd:element name="root" msdata:IsDataSet="true">
+ <xsd:complexType>
+ <xsd:choice maxOccurs="unbounded">
+ <xsd:element name="metadata">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" />
+ </xsd:sequence>
+ <xsd:attribute name="name" use="required" type="xsd:string" />
+ <xsd:attribute name="type" type="xsd:string" />
+ <xsd:attribute name="mimetype" type="xsd:string" />
+ <xsd:attribute ref="xml:space" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="assembly">
+ <xsd:complexType>
+ <xsd:attribute name="alias" type="xsd:string" />
+ <xsd:attribute name="name" type="xsd:string" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="data">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+ <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+ <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+ <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+ <xsd:attribute ref="xml:space" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="resheader">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required" />
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:choice>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:schema>
+ <resheader name="resmimetype">
+ <value>text/microsoft-resx</value>
+ </resheader>
+ <resheader name="version">
+ <value>2.0</value>
+ </resheader>
+ <resheader name="reader">
+ <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </resheader>
+ <resheader name="writer">
+ <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </resheader>
+</root>
\ No newline at end of file
diff --git a/DevApp/Gs.DevApp/UserControl/ToolBarMenu.Designer.cs b/DevApp/Gs.DevApp/UserControl/ToolBarMenu.Designer.cs
new file mode 100644
index 0000000..ecb27c2
--- /dev/null
+++ b/DevApp/Gs.DevApp/UserControl/ToolBarMenu.Designer.cs
@@ -0,0 +1,295 @@
+锘�
+namespace Gs.DevApp.UserControl
+{
+ partial class ToolBarMenu
+ {
+ /// <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()
+ {
+ this.components = new System.ComponentModel.Container();
+ this.bar4 = new DevExpress.XtraBars.Bar();
+ this.bar1 = new DevExpress.XtraBars.Bar();
+ this.barButtonItem2 = new DevExpress.XtraBars.BarButtonItem();
+ this.barButtonItem1 = new DevExpress.XtraBars.BarButtonItem();
+ this.barDockControlLeft = new DevExpress.XtraBars.BarDockControl();
+ this.barManager1 = new DevExpress.XtraBars.BarManager(this.components);
+ this.bar2 = new DevExpress.XtraBars.Bar();
+ this.btnAdd = new DevExpress.XtraBars.BarLargeButtonItem();
+ this.barLargeButtonItem2 = new DevExpress.XtraBars.BarLargeButtonItem();
+ this.barLargeButtonItem3 = new DevExpress.XtraBars.BarLargeButtonItem();
+ this.barLargeButtonItem4 = new DevExpress.XtraBars.BarLargeButtonItem();
+ this.barLargeButtonItem5 = new DevExpress.XtraBars.BarLargeButtonItem();
+ this.barLargeButtonItem6 = new DevExpress.XtraBars.BarLargeButtonItem();
+ this.barLargeButtonItem7 = new DevExpress.XtraBars.BarLargeButtonItem();
+ this.barLargeButtonItem8 = new DevExpress.XtraBars.BarLargeButtonItem();
+ this.barLargeButtonItem9 = new DevExpress.XtraBars.BarLargeButtonItem();
+ this.barLargeButtonItem10 = new DevExpress.XtraBars.BarLargeButtonItem();
+ this.barDockControlTop = new DevExpress.XtraBars.BarDockControl();
+ this.barDockControlBottom = new DevExpress.XtraBars.BarDockControl();
+ this.barDockControlRight = new DevExpress.XtraBars.BarDockControl();
+ this.bar3 = new DevExpress.XtraBars.Bar();
+ ((System.ComponentModel.ISupportInitialize)(this.barManager1)).BeginInit();
+ this.SuspendLayout();
+ //
+ // bar4
+ //
+ this.bar4.BarName = "Custom 5";
+ this.bar4.DockCol = 0;
+ this.bar4.DockRow = 2;
+ this.bar4.DockStyle = DevExpress.XtraBars.BarDockStyle.Top;
+ this.bar4.Text = "Custom 5";
+ //
+ // bar1
+ //
+ this.bar1.BarName = "Tools";
+ this.bar1.DockCol = 0;
+ this.bar1.DockRow = 1;
+ this.bar1.DockStyle = DevExpress.XtraBars.BarDockStyle.Top;
+ this.bar1.Text = "Tools";
+ //
+ // barButtonItem2
+ //
+ this.barButtonItem2.Caption = "barButtonItem2";
+ this.barButtonItem2.Id = 11;
+ this.barButtonItem2.Name = "barButtonItem2";
+ //
+ // barButtonItem1
+ //
+ this.barButtonItem1.Id = 8;
+ this.barButtonItem1.Name = "barButtonItem1";
+ //
+ // barDockControlLeft
+ //
+ this.barDockControlLeft.CausesValidation = false;
+ this.barDockControlLeft.Dock = System.Windows.Forms.DockStyle.Left;
+ this.barDockControlLeft.Location = new System.Drawing.Point(0, 71);
+ this.barDockControlLeft.Manager = this.barManager1;
+ this.barDockControlLeft.Size = new System.Drawing.Size(0, 79);
+ //
+ // barManager1
+ //
+ this.barManager1.Bars.AddRange(new DevExpress.XtraBars.Bar[] {
+ this.bar2});
+ this.barManager1.DockControls.Add(this.barDockControlTop);
+ this.barManager1.DockControls.Add(this.barDockControlBottom);
+ this.barManager1.DockControls.Add(this.barDockControlLeft);
+ this.barManager1.DockControls.Add(this.barDockControlRight);
+ this.barManager1.Form = this;
+ this.barManager1.Items.AddRange(new DevExpress.XtraBars.BarItem[] {
+ this.btnAdd,
+ this.barLargeButtonItem2,
+ this.barLargeButtonItem3,
+ this.barLargeButtonItem4,
+ this.barLargeButtonItem5,
+ this.barButtonItem1,
+ this.barLargeButtonItem6,
+ this.barLargeButtonItem7,
+ this.barButtonItem2,
+ this.barLargeButtonItem8,
+ this.barLargeButtonItem9,
+ this.barLargeButtonItem10});
+ this.barManager1.MainMenu = this.bar2;
+ this.barManager1.MaxItemId = 15;
+ //
+ // bar2
+ //
+ this.bar2.BarName = "Main menu";
+ this.bar2.DockCol = 0;
+ this.bar2.DockRow = 0;
+ this.bar2.DockStyle = DevExpress.XtraBars.BarDockStyle.Top;
+ this.bar2.LinksPersistInfo.AddRange(new DevExpress.XtraBars.LinkPersistInfo[] {
+ new DevExpress.XtraBars.LinkPersistInfo(DevExpress.XtraBars.BarLinkUserDefines.PaintStyle, this.btnAdd, DevExpress.XtraBars.BarItemPaintStyle.CaptionGlyph),
+ new DevExpress.XtraBars.LinkPersistInfo(DevExpress.XtraBars.BarLinkUserDefines.PaintStyle, this.barLargeButtonItem2, DevExpress.XtraBars.BarItemPaintStyle.CaptionGlyph),
+ new DevExpress.XtraBars.LinkPersistInfo(DevExpress.XtraBars.BarLinkUserDefines.PaintStyle, this.barLargeButtonItem3, DevExpress.XtraBars.BarItemPaintStyle.CaptionGlyph),
+ new DevExpress.XtraBars.LinkPersistInfo(DevExpress.XtraBars.BarLinkUserDefines.PaintStyle, this.barLargeButtonItem4, DevExpress.XtraBars.BarItemPaintStyle.CaptionGlyph),
+ new DevExpress.XtraBars.LinkPersistInfo(DevExpress.XtraBars.BarLinkUserDefines.PaintStyle, this.barLargeButtonItem5, DevExpress.XtraBars.BarItemPaintStyle.CaptionGlyph),
+ new DevExpress.XtraBars.LinkPersistInfo(this.barLargeButtonItem6),
+ new DevExpress.XtraBars.LinkPersistInfo(this.barLargeButtonItem7),
+ new DevExpress.XtraBars.LinkPersistInfo(this.barLargeButtonItem8),
+ new DevExpress.XtraBars.LinkPersistInfo(this.barLargeButtonItem9),
+ new DevExpress.XtraBars.LinkPersistInfo(this.barLargeButtonItem10)});
+ this.bar2.OptionsBar.MultiLine = true;
+ this.bar2.OptionsBar.UseWholeRow = true;
+ this.bar2.Text = "Main menu";
+ //
+ // btnAdd
+ //
+ this.btnAdd.Caption = "澧炲姞";
+ this.btnAdd.Id = 3;
+ this.btnAdd.ImageOptions.Image = global::Gs.DevApp.Properties.Resources.trackingchanges_allmarkup_16x16;
+ this.btnAdd.ImageOptions.LargeImage = global::Gs.DevApp.Properties.Resources.trackingchanges_allmarkup_32x32;
+ this.btnAdd.Name = "btnAdd";
+ //
+ // barLargeButtonItem2
+ //
+ this.barLargeButtonItem2.Caption = "鍒犻櫎";
+ this.barLargeButtonItem2.Id = 4;
+ this.barLargeButtonItem2.ImageOptions.Image = global::Gs.DevApp.Properties.Resources.removegroupfooter_16x16;
+ this.barLargeButtonItem2.ImageOptions.LargeImage = global::Gs.DevApp.Properties.Resources.removegroupfooter_32x32;
+ this.barLargeButtonItem2.Name = "barLargeButtonItem2";
+ //
+ // barLargeButtonItem3
+ //
+ this.barLargeButtonItem3.Caption = "淇敼";
+ this.barLargeButtonItem3.Id = 5;
+ this.barLargeButtonItem3.ImageOptions.Image = global::Gs.DevApp.Properties.Resources.trackingchanges_trackchanges_16x16;
+ this.barLargeButtonItem3.ImageOptions.LargeImage = global::Gs.DevApp.Properties.Resources.trackingchanges_trackchanges_32x32;
+ this.barLargeButtonItem3.Name = "barLargeButtonItem3";
+ //
+ // barLargeButtonItem4
+ //
+ this.barLargeButtonItem4.Caption = "淇濆瓨";
+ this.barLargeButtonItem4.Id = 6;
+ this.barLargeButtonItem4.ImageOptions.Image = global::Gs.DevApp.Properties.Resources.exportfile_16x16;
+ this.barLargeButtonItem4.ImageOptions.LargeImage = global::Gs.DevApp.Properties.Resources.exportfile_32x32;
+ this.barLargeButtonItem4.Name = "barLargeButtonItem4";
+ //
+ // barLargeButtonItem5
+ //
+ this.barLargeButtonItem5.Caption = "鏌ョ湅";
+ this.barLargeButtonItem5.Id = 7;
+ this.barLargeButtonItem5.ImageOptions.Image = global::Gs.DevApp.Properties.Resources.show_16x16;
+ this.barLargeButtonItem5.ImageOptions.LargeImage = global::Gs.DevApp.Properties.Resources.show_32x32;
+ this.barLargeButtonItem5.Name = "barLargeButtonItem5";
+ //
+ // barLargeButtonItem6
+ //
+ this.barLargeButtonItem6.Caption = "鍙栨秷";
+ this.barLargeButtonItem6.Id = 9;
+ this.barLargeButtonItem6.ImageOptions.Image = global::Gs.DevApp.Properties.Resources.renamedatasource_16x16;
+ this.barLargeButtonItem6.ImageOptions.LargeImage = global::Gs.DevApp.Properties.Resources.renamedatasource_32x32;
+ this.barLargeButtonItem6.Name = "barLargeButtonItem6";
+ //
+ // barLargeButtonItem7
+ //
+ this.barLargeButtonItem7.Caption = "鍒锋柊";
+ this.barLargeButtonItem7.Id = 10;
+ this.barLargeButtonItem7.ImageOptions.Image = global::Gs.DevApp.Properties.Resources.convert_16x16;
+ this.barLargeButtonItem7.ImageOptions.LargeImage = global::Gs.DevApp.Properties.Resources.convert_32x32;
+ this.barLargeButtonItem7.Name = "barLargeButtonItem7";
+ //
+ // barLargeButtonItem8
+ //
+ this.barLargeButtonItem8.Caption = "瀵煎嚭";
+ this.barLargeButtonItem8.Description = "瀵煎嚭";
+ this.barLargeButtonItem8.Id = 12;
+ this.barLargeButtonItem8.ImageOptions.Image = global::Gs.DevApp.Properties.Resources.converttorange_16x16;
+ this.barLargeButtonItem8.ImageOptions.LargeImage = global::Gs.DevApp.Properties.Resources.converttorange_32x32;
+ this.barLargeButtonItem8.Name = "barLargeButtonItem8";
+ //
+ // barLargeButtonItem9
+ //
+ this.barLargeButtonItem9.Caption = "瀹℃牳";
+ this.barLargeButtonItem9.Id = 13;
+ this.barLargeButtonItem9.ImageOptions.Image = global::Gs.DevApp.Properties.Resources.checkbox2_16x16;
+ this.barLargeButtonItem9.ImageOptions.LargeImage = global::Gs.DevApp.Properties.Resources.checkbox2_32x32;
+ this.barLargeButtonItem9.Name = "barLargeButtonItem9";
+ //
+ // barLargeButtonItem10
+ //
+ this.barLargeButtonItem10.Caption = "鍙嶅鏍�";
+ this.barLargeButtonItem10.Id = 14;
+ this.barLargeButtonItem10.ImageOptions.Image = global::Gs.DevApp.Properties.Resources.forcetesting_16x16;
+ this.barLargeButtonItem10.ImageOptions.LargeImage = global::Gs.DevApp.Properties.Resources.forcetesting_32x32;
+ this.barLargeButtonItem10.Name = "barLargeButtonItem10";
+ //
+ // barDockControlTop
+ //
+ this.barDockControlTop.CausesValidation = false;
+ this.barDockControlTop.Dock = System.Windows.Forms.DockStyle.Top;
+ this.barDockControlTop.Location = new System.Drawing.Point(0, 0);
+ this.barDockControlTop.Manager = this.barManager1;
+ this.barDockControlTop.Size = new System.Drawing.Size(926, 71);
+ //
+ // barDockControlBottom
+ //
+ this.barDockControlBottom.CausesValidation = false;
+ this.barDockControlBottom.Dock = System.Windows.Forms.DockStyle.Bottom;
+ this.barDockControlBottom.Location = new System.Drawing.Point(0, 150);
+ this.barDockControlBottom.Manager = this.barManager1;
+ this.barDockControlBottom.Size = new System.Drawing.Size(926, 0);
+ //
+ // barDockControlRight
+ //
+ this.barDockControlRight.CausesValidation = false;
+ this.barDockControlRight.Dock = System.Windows.Forms.DockStyle.Right;
+ this.barDockControlRight.Location = new System.Drawing.Point(926, 71);
+ this.barDockControlRight.Manager = this.barManager1;
+ this.barDockControlRight.Size = new System.Drawing.Size(0, 79);
+ //
+ // bar3
+ //
+ this.bar3.BarName = "Status bar";
+ this.bar3.CanDockStyle = DevExpress.XtraBars.BarCanDockStyle.Bottom;
+ this.bar3.DockCol = 0;
+ this.bar3.DockRow = 0;
+ this.bar3.DockStyle = DevExpress.XtraBars.BarDockStyle.Bottom;
+ this.bar3.OptionsBar.AllowQuickCustomization = false;
+ this.bar3.OptionsBar.DrawDragBorder = false;
+ this.bar3.OptionsBar.UseWholeRow = true;
+ this.bar3.Text = "Status bar";
+ //
+ // ToolBarMenu
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 18F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.Controls.Add(this.barDockControlLeft);
+ this.Controls.Add(this.barDockControlRight);
+ this.Controls.Add(this.barDockControlBottom);
+ this.Controls.Add(this.barDockControlTop);
+ this.Name = "ToolBarMenu";
+ this.Size = new System.Drawing.Size(926, 150);
+ ((System.ComponentModel.ISupportInitialize)(this.barManager1)).EndInit();
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+
+ private DevExpress.XtraBars.Bar bar4;
+ private DevExpress.XtraBars.Bar bar1;
+ private DevExpress.XtraBars.BarButtonItem barButtonItem2;
+ private DevExpress.XtraBars.BarButtonItem barButtonItem1;
+ private DevExpress.XtraBars.BarDockControl barDockControlLeft;
+ private DevExpress.XtraBars.BarManager barManager1;
+ private DevExpress.XtraBars.Bar bar2;
+ private DevExpress.XtraBars.BarLargeButtonItem btnAdd;
+ private DevExpress.XtraBars.BarLargeButtonItem barLargeButtonItem2;
+ private DevExpress.XtraBars.BarLargeButtonItem barLargeButtonItem3;
+ private DevExpress.XtraBars.BarLargeButtonItem barLargeButtonItem4;
+ private DevExpress.XtraBars.BarLargeButtonItem barLargeButtonItem5;
+ private DevExpress.XtraBars.BarLargeButtonItem barLargeButtonItem6;
+ private DevExpress.XtraBars.BarLargeButtonItem barLargeButtonItem7;
+ private DevExpress.XtraBars.BarLargeButtonItem barLargeButtonItem8;
+ private DevExpress.XtraBars.BarLargeButtonItem barLargeButtonItem9;
+ private DevExpress.XtraBars.BarLargeButtonItem barLargeButtonItem10;
+ private DevExpress.XtraBars.BarDockControl barDockControlTop;
+ private DevExpress.XtraBars.BarDockControl barDockControlBottom;
+ private DevExpress.XtraBars.BarDockControl barDockControlRight;
+ private DevExpress.XtraBars.Bar bar3;
+ }
+}
diff --git a/DevApp/Gs.DevApp/UserControl/ToolBarMenu.cs b/DevApp/Gs.DevApp/UserControl/ToolBarMenu.cs
new file mode 100644
index 0000000..e66ec0e
--- /dev/null
+++ b/DevApp/Gs.DevApp/UserControl/ToolBarMenu.cs
@@ -0,0 +1,31 @@
+锘縰sing 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 Gs.DevApp.UserControl
+{
+ public partial class ToolBarMenu : DevExpress.XtraEditors.XtraUserControl
+ {
+ public event EventHandler btnAddClick;
+ public ToolBarMenu()
+ {
+ InitializeComponent();
+ this.btnAdd.ItemClick += BtnAdd_ItemClick;
+ }
+
+ private void BtnAdd_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
+ {
+ if (btnAddClick != null)
+ {
+ btnAddClick(this, e);
+ }
+ }
+ }
+}
diff --git a/DevApp/Gs.DevApp/UserControl/ToolBarMenu.resx b/DevApp/Gs.DevApp/UserControl/ToolBarMenu.resx
new file mode 100644
index 0000000..52e53df
--- /dev/null
+++ b/DevApp/Gs.DevApp/UserControl/ToolBarMenu.resx
@@ -0,0 +1,123 @@
+锘�<?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>
+</root>
\ No newline at end of file
diff --git a/DevApp/Gs.DevApp/packages.config b/DevApp/Gs.DevApp/packages.config
new file mode 100644
index 0000000..0b14af3
--- /dev/null
+++ b/DevApp/Gs.DevApp/packages.config
@@ -0,0 +1,4 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<packages>
+ <package id="Newtonsoft.Json" version="13.0.3" targetFramework="net48" />
+</packages>
\ No newline at end of file
diff --git a/DevApp/GsDevSolution.sln b/DevApp/GsDevSolution.sln
new file mode 100644
index 0000000..f1ce405
--- /dev/null
+++ b/DevApp/GsDevSolution.sln
@@ -0,0 +1,25 @@
+锘�
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 16
+VisualStudioVersion = 16.0.35130.168
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Gs.DevApp", "Gs.DevApp\Gs.DevApp.csproj", "{A7EB5F78-699E-4514-8905-30842765E673}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {A7EB5F78-699E-4514-8905-30842765E673}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {A7EB5F78-699E-4514-8905-30842765E673}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {A7EB5F78-699E-4514-8905-30842765E673}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {A7EB5F78-699E-4514-8905-30842765E673}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {5738078E-1FAB-4171-8506-F0DBE14817E4}
+ EndGlobalSection
+EndGlobal
diff --git a/WebApi/.vs/GsMesSolution/DesignTimeBuild/.dtbcache.v2 b/WebApi/.vs/GsMesSolution/DesignTimeBuild/.dtbcache.v2
new file mode 100644
index 0000000..9005824
--- /dev/null
+++ b/WebApi/.vs/GsMesSolution/DesignTimeBuild/.dtbcache.v2
Binary files differ
diff --git a/WebApi/.vs/GsMesSolution/FileContentIndex/a3306c0b-3453-46b3-bcf4-6e38ab6b139e.vsidx b/WebApi/.vs/GsMesSolution/FileContentIndex/a3306c0b-3453-46b3-bcf4-6e38ab6b139e.vsidx
new file mode 100644
index 0000000..9c00394
--- /dev/null
+++ b/WebApi/.vs/GsMesSolution/FileContentIndex/a3306c0b-3453-46b3-bcf4-6e38ab6b139e.vsidx
Binary files differ
diff --git a/WebApi/.vs/GsMesSolution/v17/.futdcache.v2 b/WebApi/.vs/GsMesSolution/v17/.futdcache.v2
new file mode 100644
index 0000000..448ddb6
--- /dev/null
+++ b/WebApi/.vs/GsMesSolution/v17/.futdcache.v2
Binary files differ
diff --git a/WebApi/.vs/GsMesSolution/v17/DocumentLayout.json b/WebApi/.vs/GsMesSolution/v17/DocumentLayout.json
new file mode 100644
index 0000000..27e8c9d
--- /dev/null
+++ b/WebApi/.vs/GsMesSolution/v17/DocumentLayout.json
@@ -0,0 +1,31 @@
+{
+ "Version": 1,
+ "WorkspaceRootPath": "D:\\GsMesV2\\WebApi\\",
+ "Documents": [],
+ "DocumentGroupContainers": [
+ {
+ "Orientation": 0,
+ "VerticalTabListWidth": 256,
+ "DocumentGroups": [
+ {
+ "DockedWidth": 200,
+ "SelectedChildIndex": -1,
+ "Children": [
+ {
+ "$type": "Bookmark",
+ "Name": "ST:0:0:{1c4feeaa-4718-4aa9-859d-94ce25d182ba}"
+ },
+ {
+ "$type": "Bookmark",
+ "Name": "ST:129:0:{116d2292-e37d-41cd-a077-ebacac4c8cc4}"
+ },
+ {
+ "$type": "Bookmark",
+ "Name": "ST:0:0:{aa2115a1-9712-457b-9047-dbb71ca2cdd2}"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/WebApi/.vs/ProjectEvaluation/gsmessolution.metadata.v8.bin b/WebApi/.vs/ProjectEvaluation/gsmessolution.metadata.v8.bin
new file mode 100644
index 0000000..6ecfca7
--- /dev/null
+++ b/WebApi/.vs/ProjectEvaluation/gsmessolution.metadata.v8.bin
Binary files differ
diff --git a/WebApi/.vs/ProjectEvaluation/gsmessolution.projects.v8.bin b/WebApi/.vs/ProjectEvaluation/gsmessolution.projects.v8.bin
new file mode 100644
index 0000000..e36debd
--- /dev/null
+++ b/WebApi/.vs/ProjectEvaluation/gsmessolution.projects.v8.bin
Binary files differ
diff --git a/WebApi/.vs/ProjectEvaluation/gsmessolution.strings.v8.bin b/WebApi/.vs/ProjectEvaluation/gsmessolution.strings.v8.bin
new file mode 100644
index 0000000..721572d
--- /dev/null
+++ b/WebApi/.vs/ProjectEvaluation/gsmessolution.strings.v8.bin
Binary files differ
diff --git a/WebApi/Gs.Demo/Gs.Demo.csproj b/WebApi/Gs.Demo/Gs.Demo.csproj
new file mode 100644
index 0000000..91033c6
--- /dev/null
+++ b/WebApi/Gs.Demo/Gs.Demo.csproj
@@ -0,0 +1,15 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+ <PropertyGroup>
+ <TargetFramework>net8.0</TargetFramework>
+ <ImplicitUsings>enable</ImplicitUsings>
+ <Nullable>enable</Nullable>
+ <BaseOutputPath>D:\GsMes\Gs.HostIIS\bin</BaseOutputPath>
+ <GenerateDocumentationFile>True</GenerateDocumentationFile>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <ProjectReference Include="..\Gs.Toolbox\Gs.Toolbox.csproj" />
+ </ItemGroup>
+
+</Project>
diff --git a/WebApi/Gs.Demo/Modes/Student.cs b/WebApi/Gs.Demo/Modes/Student.cs
new file mode 100644
index 0000000..09c1092
--- /dev/null
+++ b/WebApi/Gs.Demo/Modes/Student.cs
@@ -0,0 +1,56 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Gs.Demo.Modes
+{
+
+ /// <summary>
+ /// 瀛︾敓瀹炰綋
+ /// </summary>
+ public class Student
+ {
+
+ /// <summary>
+ /// guid
+ /// </summary>
+ public Guid? guid { get; set; }
+
+ /// <summary>
+ /// 濮撳悕
+ /// </summary>
+ public string name { get; set; }
+
+ /// <summary>
+ /// 骞撮緞
+ /// </summary>
+ public int age { get; set; }
+
+ /// <summary>
+ /// 鍦板潃
+ /// </summary>
+ public string address { get; set; }
+
+ /// <summary>
+ /// 濮撳埆
+ /// </summary>
+ public int sex { get; set; }
+
+ /// <summary>
+ /// 韬唤璇�
+ /// </summary>
+ public string card { get; set; }
+
+ /// <summary>
+ /// 鏈�鍚庣紪杈戞椂闂�
+ /// </summary>
+ public DateTime lastEdtTime { get; set; }
+
+ /// <summary>
+ /// 澧炲姞鏃堕棿
+ /// </summary>
+ public DateTime addTime { get; set; }
+ }
+}
diff --git a/WebApi/Gs.Demo/Service/Test/Test.cs b/WebApi/Gs.Demo/Service/Test/Test.cs
new file mode 100644
index 0000000..d2b6e46
--- /dev/null
+++ b/WebApi/Gs.Demo/Service/Test/Test.cs
@@ -0,0 +1,194 @@
+锘縰sing Gs.Demo.Modes;
+using Microsoft.AspNetCore.Mvc;
+using System.Text;
+using System.Data.SqlClient;
+using System.Data;
+using Gs.Toolbox;
+using Microsoft.AspNetCore.Authorization;
+
+namespace Gs.Demo.Service
+{
+ [ApiGroup(ApiGroupNames.Demo)]
+ public class Test : IRomteService
+ {
+ /// <summary>
+ /// 璇诲鐢熷彇鍒楄〃锛屾敮鎸佸垎椤�
+ /// </summary>
+ /// <param name="model"></param>
+ /// <returns></returns>
+ [RequestMethod(RequestMethods.POST)]
+ public ReturnDto<PageList<Student>> GetStudentListPage([FromBody] PageQuery model)
+ {
+ int currentPage = model.currentPage;
+ int everyPageSize = model.everyPageSize;
+ string sortName = string.IsNullOrEmpty(model.sortName)? "a.lastEdtTime" : model.sortName;
+ System.Text.StringBuilder sbSql = new StringBuilder();
+ sbSql.Append("select * from ");
+ sbSql.Append("( ");
+ sbSql.Append("select top 100000 ROW_NUMBER() over(order by " + sortName + " " + model.sortOrder + ") as rowIndex,* from gs_test a where 1=1" + model.keyWhere);
+ sbSql.Append(") as T ");
+ sbSql.Append(" where T.rowindex>(" + currentPage + "-1)*" + everyPageSize + " and T.rowindex<=" + currentPage + "*" + everyPageSize + "");
+ sbSql.Append(" select count(1) as intTotal from dbo.gs_test a where 1=1 " + model.keyWhere).ToString();
+ DataSet dset = new DataSet();
+ try
+ {
+ dset = Gs.Toolbox.DbHelperSQL.Query(sbSql.ToString());
+ }
+ catch (Exception ex)
+ {
+ Gs.Toolbox.LogHelper.Debug(this.ToString(), "GetStudentListPage error锛�" + ex.Message);
+ return ReturnDto<PageList<Student>>.QuickReturn(default(PageList<Student>), ReturnCode.Exception, "璇诲彇澶辫触");
+ }
+ PageList<Student> _pglist = new PageList<Student>
+ {
+ total = 0,
+ everyPageSize = 0,
+ pages = 0,
+ list = new List<Student>()
+ };
+ if (dset != null && dset.Tables.Count > 0 && dset.Tables[0].Rows.Count > 0)//鏈夋暟鎹�
+ {
+ int intTotal = int.Parse(dset.Tables[1].Rows[0]["intTotal"].ToString());
+ int pages = (intTotal % everyPageSize != 0) ? (intTotal / everyPageSize + 1) : (intTotal / everyPageSize);
+ _pglist.total = intTotal;
+ _pglist.everyPageSize = everyPageSize;
+ _pglist.pages = pages;
+ foreach (DataRow dr in dset.Tables[0].Rows)
+ {
+ _pglist.list.Add(
+ new Student()
+ {
+ guid = Guid.Parse(dr["guid"].ToString()),
+ name = dr["name"].ToString(),
+ age = int.Parse(dr["age"].ToString()),
+ address = dr["address"].ToString(),
+ sex = int.Parse(dr["sex"].ToString()),
+ card = dr["card"].ToString(),
+ lastEdtTime = DateTime.Parse(dr["lastEdtTime"].ToString()),
+ addTime = DateTime.Parse(dr["addTime"].ToString()),
+ }
+ );
+ }
+ }
+ return ReturnDto<PageList<Student>>.QuickReturn(_pglist, ReturnCode.Success, "璇诲彇鎴愬姛");
+ }
+
+
+ /// <summary>
+ /// 鍒犻櫎瀛︾敓
+ /// </summary>
+ /// <param name="model"></param>
+ /// <returns></returns>
+ [RequestMethod(RequestMethods.POST)]
+ public ReturnDto<int?> DeleteModel([FromBody] Student model)
+ {
+ int rtnInt = (int)ReturnCode.Default;
+ try
+ {
+ rtnInt = DbHelperSQL.ExecuteSql("delete from dbo.gs_test where guid='" + model.guid.ToString() + "'");
+ }
+ catch (Exception ex)
+ {
+ LogHelper.Debug(this.ToString(), "DeleteStudent error锛�" + ex.Message);
+ rtnInt = (int)ReturnCode.Exception;
+ }
+ if (rtnInt > 0)
+ return ReturnDto<int>.QuickReturn(default(int?), ReturnCode.Success, "鎿嶄綔鎴愬姛锛屽叡鍒犻櫎" + rtnInt.ToString() + "鏉℃暟鎹紒");
+ else
+ return ReturnDto<int>.QuickReturn(default(int?), ReturnCode.Exception, "鍒犻櫎澶辫触锛岃閲嶈瘯锛�");
+ }
+
+ /// <summary>
+ /// 澧炲姞瀛︾敓
+ /// </summary>
+ /// <param name="model"></param>
+ /// <returns></returns>
+ [RequestMethod(RequestMethods.POST)]
+ public ReturnDto<int?> EditStudent([FromBody] Student model)
+ {
+ Guid? guid = model.guid;
+ string name = model.name;
+ int age = model.age;
+ string address = model.address;
+ int sex = model.sex;
+ string card = model.card;
+ int? rtnInt = (int)ReturnCode.Default;
+ StringBuilder strSql = new StringBuilder();
+ if (guid == null)
+ {
+ strSql.Append("update dbo.gs_test ");
+ strSql.Append("set name=@name,age=@age,address=@address,sex=@sex,card=@card,addTime=getdate(),lastEdtTime=getdate()");
+ strSql.Append(" where guid='" + guid + "'");
+ }
+ else
+ {
+ guid = Guid.NewGuid();
+ strSql.Append("insert into dbo.gs_test(");
+ strSql.Append(" guid,name,age,address,sex,card,addTime,lastEdtTime)");
+ strSql.Append(" values (");
+ strSql.Append("'" + guid + "',@id,@name,@age,@address,@sex,@card,getdate(),getdate())");
+ }
+ SqlParameter[] parameters = {
+ new SqlParameter("@name", name),
+ new SqlParameter("@age",age),
+ new SqlParameter("@address",address),
+ new SqlParameter("@sex",sex),
+ new SqlParameter("@card",card),
+ };
+ try
+ {
+ rtnInt = DbHelperSQL.ExecuteSql(strSql.ToString(), parameters);
+ }
+ catch (Exception ex)
+ {
+ LogHelper.Debug(this.ToString(), "EditStudent error锛�" + ex.Message);
+ rtnInt = (int)ReturnCode.Exception;
+ }
+ if (rtnInt > 0)
+ return ReturnDto<int>.QuickReturn(rtnInt, ReturnCode.Success, "澧炲姞鎴愬姛锛�");
+ else
+ return ReturnDto<int>.QuickReturn(rtnInt, ReturnCode.Exception, "澧炲姞澶辫触锛岃閲嶈瘯锛�");
+ }
+
+ /// <summary>
+ /// 璇诲彇瀛︾敓
+ /// </summary>
+ /// <param name="guid"></param>
+ /// <returns></returns>
+ [RequestMethod(RequestMethods.GET)]
+ [AllowAnonymous]
+ public ReturnDto<Student> GetStudent(
+ Guid guid
+ )
+ {
+ Student m = new Student();
+ System.Text.StringBuilder sbSql = new StringBuilder();
+ sbSql.Append("select top 1 * from dbo.gs_test where 1=1 and guid='" + guid.ToString() + "' ");
+ try
+ {
+ DataSet dset = new DataSet();
+ dset = DbHelperSQL.Query(sbSql.ToString());
+ if (dset != null && dset.Tables.Count > 0 && dset.Tables[0].Rows.Count > 0)
+ {
+ System.Data.DataRow dr = dset.Tables[0].Rows[0];
+ m.guid = Guid.Parse(dr["guid"].ToString());
+ m.name = dr["name"].ToString();
+ m.age = int.Parse(dr["age"].ToString());
+ m.address = dr["address"].ToString();
+ m.sex = int.Parse(dr["sex"].ToString());
+ m.card = dr["card"].ToString();
+ m.lastEdtTime = DateTime.Parse(dr["lastEdtTime"].ToString());
+ m.addTime = DateTime.Parse(dr["addTime"].ToString());
+ return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Success, "璇诲彇鎴愬姛锛�");
+ }
+ else
+ return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default, "璇诲彇澶辫触锛�");
+ }
+ catch (Exception ex)
+ {
+ LogHelper.Debug(this.ToString(), "GetModel error:" + ex.Message);
+ return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default, "璇诲彇澶辫触锛�");
+ }
+ }
+ }
+}
diff --git a/WebApi/Gs.HostIIS/Gs.HostIIS.csproj b/WebApi/Gs.HostIIS/Gs.HostIIS.csproj
new file mode 100644
index 0000000..068f571
--- /dev/null
+++ b/WebApi/Gs.HostIIS/Gs.HostIIS.csproj
@@ -0,0 +1,18 @@
+<Project Sdk="Microsoft.NET.Sdk.Web">
+
+ <PropertyGroup>
+ <TargetFramework>net8.0</TargetFramework>
+ <Nullable>enable</Nullable>
+ <ImplicitUsings>enable</ImplicitUsings>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="8.0.8" />
+ <PackageReference Include="Swashbuckle.AspNetCore" Version="6.5.0" />
+ </ItemGroup>
+
+ <ItemGroup>
+ <ProjectReference Include="..\Gs.Toolbox\Gs.Toolbox.csproj" />
+ </ItemGroup>
+
+</Project>
diff --git a/WebApi/Gs.HostIIS/Program.cs b/WebApi/Gs.HostIIS/Program.cs
new file mode 100644
index 0000000..102eea5
--- /dev/null
+++ b/WebApi/Gs.HostIIS/Program.cs
@@ -0,0 +1,102 @@
+using Microsoft.OpenApi.Models;
+using System.Text.Encodings.Web;
+using System.Text.Unicode;
+using Gs.Toolbox;
+using Newtonsoft.Json.Serialization;
+using Newtonsoft.Json;
+
+var builder = WebApplication.CreateBuilder(args);
+builder.Services.AddControllers()
+ .AddJsonOptions(options =>
+ {
+ options.JsonSerializerOptions.Encoder = JavaScriptEncoder.Create(UnicodeRanges.All);
+ }).AddMvcOptions((opt) =>
+ {
+ opt.Filters.Add<ApiAuthorizeAttribute>();
+ }).AddNewtonsoftJson(opt =>
+ {
+ opt.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
+ // opt.SerializerSettings.ContractResolver = new DefaultContractResolver();
+ opt.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
+ opt.SerializerSettings.DateFormatString = "yyyy-MM-dd HH:mm:ss";
+ });
+builder.Services.AddCustomConvention();
+builder.AddCustomInject();
+builder.Services.AddEndpointsApiExplorer();
+builder.Services.AddSwaggerGen(c =>
+{
+ c.SwaggerDoc("v1", new OpenApiInfo { Title = "GS-MES Api开发文档", Version = "v1" });
+ var xmlFiles = Directory.GetFiles(AppContext.BaseDirectory + Gs.Toolbox.AppSettingsHelper.getValueByKey("ServicesPath"), "*.xml");
+ foreach (var file in xmlFiles)
+ {
+ c.IncludeXmlComments(file, true);
+ }
+ //添加分组定义
+ typeof(ApiGroupNames).GetFields().Skip(1).ToList().ForEach(f =>
+ {
+ var info = f.GetCustomAttributes(typeof(GroupInfoAttribute), false).OfType<GroupInfoAttribute>().FirstOrDefault();
+ c.SwaggerDoc(f.Name, new OpenApiInfo
+ {
+ Title = info?.Title,
+ Version = info?.Version,
+ Description = info?.Description
+ });
+ });
+ c.SwaggerDoc("NoGroup", new OpenApiInfo
+ {
+ Title = "无分组"
+ });
+ c.DocInclusionPredicate((docName, apiDescription) =>
+ {
+ if (docName == "NoGroup")
+ {
+ return string.IsNullOrEmpty(apiDescription.GroupName);
+ }
+ else
+ {
+ return apiDescription.GroupName == docName;
+ }
+ });
+ //添加安全定义
+ c.AddSecurityDefinition("Token", new OpenApiSecurityScheme
+ {
+ Description = "请输入token,格式为:token 3fa85f64-5717-4562-b3fc-2c963f66afa6(注意中间必须有空格)",
+ Name = "token",
+ In = ParameterLocation.Header,
+ Type = SecuritySchemeType.ApiKey,
+ BearerFormat = "JWT",
+ Scheme = "Bearer"
+ });
+ //添加安全要求
+ c.AddSecurityRequirement(new OpenApiSecurityRequirement {
+ {
+ new OpenApiSecurityScheme{
+ Reference =new OpenApiReference{
+ Type = ReferenceType.SecurityScheme,
+ Id ="Token"
+ }
+ },new string[]{ }
+ }
+ });
+});
+builder.Services.AddSingleton(builder.Services);
+var app = builder.Build();
+app.AddCustomController();
+if (app.Environment.IsDevelopment())
+{
+ app.UseSwagger();
+ //添加分组定义
+ app.UseSwaggerUI(options =>
+ {
+ typeof(ApiGroupNames).GetFields().Skip(1).ToList().ForEach(f =>
+ {
+ var info = f.GetCustomAttributes(typeof(GroupInfoAttribute), false).OfType<GroupInfoAttribute>().FirstOrDefault();
+ options.SwaggerEndpoint($"/swagger/{f.Name}/swagger.json", info != null ? info.Title : f.Name);
+
+ });
+ options.SwaggerEndpoint("/swagger/NoGroup/swagger.json", "无分组");
+ });
+}
+app.UseAuthorization();
+app.MapControllers();
+app.Run();
\ No newline at end of file
diff --git a/WebApi/Gs.HostIIS/Properties/launchSettings.json b/WebApi/Gs.HostIIS/Properties/launchSettings.json
new file mode 100644
index 0000000..c6806d7
--- /dev/null
+++ b/WebApi/Gs.HostIIS/Properties/launchSettings.json
@@ -0,0 +1,31 @@
+锘縶
+ "$schema": "https://json.schemastore.org/launchsettings.json",
+ "iisSettings": {
+ "windowsAuthentication": false,
+ "anonymousAuthentication": true,
+ "iisExpress": {
+ "applicationUrl": "http://localhost:37005",
+ "sslPort": 0
+ }
+ },
+ "profiles": {
+ "Gs.HostIIS": {
+ "commandName": "Project",
+ "dotnetRunMessages": true,
+ "launchBrowser": true,
+ "launchUrl": "swagger",
+ "applicationUrl": "http://localhost:5263",
+ "environmentVariables": {
+ "ASPNETCORE_ENVIRONMENT": "Development"
+ }
+ },
+ "IIS Express": {
+ "commandName": "IISExpress",
+ "launchBrowser": true,
+ "launchUrl": "swagger",
+ "environmentVariables": {
+ "ASPNETCORE_ENVIRONMENT": "Development"
+ }
+ }
+ }
+}
diff --git a/WebApi/Gs.HostIIS/RequestAuthorizeAttribute.cs b/WebApi/Gs.HostIIS/RequestAuthorizeAttribute.cs
new file mode 100644
index 0000000..ddb13b5
--- /dev/null
+++ b/WebApi/Gs.HostIIS/RequestAuthorizeAttribute.cs
@@ -0,0 +1,31 @@
+锘縰sing Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc.Authorization;
+using Microsoft.AspNetCore.Mvc.Filters;
+using Microsoft.AspNetCore.Mvc;
+
+public class ApiAuthorizeAttribute : Attribute, IAuthorizationFilter
+{
+ public void OnAuthorization(AuthorizationFilterContext context)
+ {
+ string? token = context.HttpContext.Request.Headers["token"].FirstOrDefault()?.Split(' ').Last();
+ if (string.IsNullOrEmpty(token)) token = "";
+ if (HasAllowAnonymous(context) == false && token.Length < 5)
+ {
+ context.Result = new JsonResult(new { msg = "浣犳棤鏉冨仛杩欎簺", code = 401 })
+ {
+ StatusCode = StatusCodes.Status401Unauthorized
+ };
+ }
+ }
+
+ private static bool HasAllowAnonymous(AuthorizationFilterContext context)
+ {
+ var filters = context.Filters;
+ if (filters.OfType<IAllowAnonymousFilter>().Any())
+ {
+ return true;
+ }
+ var endpoint = context.HttpContext.GetEndpoint();
+ return endpoint?.Metadata?.GetMetadata<IAllowAnonymous>() != null;
+ }
+}
diff --git a/WebApi/Gs.HostIIS/appsettings.Development.json b/WebApi/Gs.HostIIS/appsettings.Development.json
new file mode 100644
index 0000000..0c208ae
--- /dev/null
+++ b/WebApi/Gs.HostIIS/appsettings.Development.json
@@ -0,0 +1,8 @@
+{
+ "Logging": {
+ "LogLevel": {
+ "Default": "Information",
+ "Microsoft.AspNetCore": "Warning"
+ }
+ }
+}
diff --git a/WebApi/Gs.HostIIS/appsettings.json b/WebApi/Gs.HostIIS/appsettings.json
new file mode 100644
index 0000000..4d493c4
--- /dev/null
+++ b/WebApi/Gs.HostIIS/appsettings.json
@@ -0,0 +1,12 @@
+{
+ "Logging": {
+ "LogLevel": {
+ "Default": "Information",
+ "Microsoft.AspNetCore": "Warning"
+ }
+ },
+ "AllowedHosts": "*",
+ "ConnectionStrings": "Data Source=localhost;Initial Catalog=gs_Mes;User ID=sa;Password =admin110",
+ "ServicesPath": "Services",
+ "LogPath": "logs"
+}
diff --git a/WebApi/Gs.Toolbox/ApiCore/Abstract/CustomDependenceAttribute.cs b/WebApi/Gs.Toolbox/ApiCore/Abstract/CustomDependenceAttribute.cs
new file mode 100644
index 0000000..973eb06
--- /dev/null
+++ b/WebApi/Gs.Toolbox/ApiCore/Abstract/CustomDependenceAttribute.cs
@@ -0,0 +1,12 @@
+锘縩amespace Gs.Toolbox
+{
+ [AttributeUsage(AttributeTargets.Class,AllowMultiple = true)]
+ public class CustomDependenceAttribute : Attribute
+ {
+ public CustomDependenceAttribute(Type type)
+ {
+ this.DependType = type;
+ }
+ public Type DependType { get; set; }
+ }
+}
diff --git a/WebApi/Gs.Toolbox/ApiCore/Abstract/IModule.cs b/WebApi/Gs.Toolbox/ApiCore/Abstract/IModule.cs
new file mode 100644
index 0000000..67a2834
--- /dev/null
+++ b/WebApi/Gs.Toolbox/ApiCore/Abstract/IModule.cs
@@ -0,0 +1,11 @@
+锘縰sing Microsoft.AspNetCore.Builder;
+using Microsoft.Extensions.DependencyInjection;
+
+namespace Gs.Toolbox
+{
+ public interface IModule
+ {
+ void ConfigService(IServiceCollection service);
+ void ApplicationConfig(WebApplication application);
+ }
+}
diff --git a/WebApi/Gs.Toolbox/ApiCore/Abstract/Inject/IScope.cs b/WebApi/Gs.Toolbox/ApiCore/Abstract/Inject/IScope.cs
new file mode 100644
index 0000000..f424e38
--- /dev/null
+++ b/WebApi/Gs.Toolbox/ApiCore/Abstract/Inject/IScope.cs
@@ -0,0 +1,6 @@
+锘縩amespace Gs.Toolbox
+{
+ public interface IScope
+ {
+ }
+}
diff --git a/WebApi/Gs.Toolbox/ApiCore/Abstract/Inject/ISingleton.cs b/WebApi/Gs.Toolbox/ApiCore/Abstract/Inject/ISingleton.cs
new file mode 100644
index 0000000..4e7fc60
--- /dev/null
+++ b/WebApi/Gs.Toolbox/ApiCore/Abstract/Inject/ISingleton.cs
@@ -0,0 +1,6 @@
+锘縩amespace Gs.Toolbox
+{
+ public interface ISingleton
+ {
+ }
+}
diff --git a/WebApi/Gs.Toolbox/ApiCore/Abstract/Inject/ITransient.cs b/WebApi/Gs.Toolbox/ApiCore/Abstract/Inject/ITransient.cs
new file mode 100644
index 0000000..dad3165
--- /dev/null
+++ b/WebApi/Gs.Toolbox/ApiCore/Abstract/Inject/ITransient.cs
@@ -0,0 +1,6 @@
+锘縩amespace Gs.Toolbox
+{
+ public interface ITransient
+ {
+ }
+}
diff --git a/WebApi/Gs.Toolbox/ApiCore/Abstract/Mvc/IBussinessService.cs b/WebApi/Gs.Toolbox/ApiCore/Abstract/Mvc/IBussinessService.cs
new file mode 100644
index 0000000..b3e4ff0
--- /dev/null
+++ b/WebApi/Gs.Toolbox/ApiCore/Abstract/Mvc/IBussinessService.cs
@@ -0,0 +1,8 @@
+锘縰sing Gs.Toolbox;
+
+namespace Gs.Toolbox
+{
+ public interface IBussinessService : IScope
+ {
+ }
+}
diff --git a/WebApi/Gs.Toolbox/ApiCore/Abstract/Mvc/IRomteService.cs b/WebApi/Gs.Toolbox/ApiCore/Abstract/Mvc/IRomteService.cs
new file mode 100644
index 0000000..027f1d2
--- /dev/null
+++ b/WebApi/Gs.Toolbox/ApiCore/Abstract/Mvc/IRomteService.cs
@@ -0,0 +1,6 @@
+锘縩amespace Gs.Toolbox
+{
+ public interface IRomteService
+ {
+ }
+}
diff --git a/WebApi/Gs.Toolbox/ApiCore/Abstract/Repository/IRespository.cs b/WebApi/Gs.Toolbox/ApiCore/Abstract/Repository/IRespository.cs
new file mode 100644
index 0000000..9cfe58f
--- /dev/null
+++ b/WebApi/Gs.Toolbox/ApiCore/Abstract/Repository/IRespository.cs
@@ -0,0 +1,8 @@
+锘縰sing Gs.Toolbox;
+
+namespace Gs.Toolbox
+{
+ public interface IRespository : IScope
+ {
+ }
+}
diff --git a/WebApi/Gs.Toolbox/ApiCore/Common/Helper/TypeHelper.cs b/WebApi/Gs.Toolbox/ApiCore/Common/Helper/TypeHelper.cs
new file mode 100644
index 0000000..c10ef88
--- /dev/null
+++ b/WebApi/Gs.Toolbox/ApiCore/Common/Helper/TypeHelper.cs
@@ -0,0 +1,44 @@
+锘縩amespace Gs.Toolbox
+{
+ public static class TypeHelper
+ {
+ public static bool IsPrimitiveExtended(Type type, bool includeNullables = true, bool includeEnums = false)
+ {
+ if (IsPrimitiveExtendedInternal(type, includeEnums))
+ {
+ return true;
+ }
+
+ if (includeNullables && IsNullable(type) && type.GenericTypeArguments.Any())
+ {
+ return IsPrimitiveExtendedInternal(type.GenericTypeArguments[0], includeEnums);
+ }
+
+ return false;
+ }
+ public static bool IsNullable(Type type)
+ {
+ return type.IsGenericType && type.GetGenericTypeDefinition() == typeof(Nullable<>);
+ }
+ private static bool IsPrimitiveExtendedInternal(Type type, bool includeEnums)
+ {
+ if (type.IsPrimitive)
+ {
+ return true;
+ }
+
+ if (includeEnums && type.IsEnum)
+ {
+ return true;
+ }
+
+ return type == typeof(string) ||
+ type == typeof(decimal) ||
+ type == typeof(DateTime) ||
+ type == typeof(DateTimeOffset) ||
+ type == typeof(TimeSpan) ||
+ type == typeof(Guid);
+ }
+
+ }
+}
diff --git a/WebApi/Gs.Toolbox/ApiCore/Common/Inject/ExposeAttribute.cs b/WebApi/Gs.Toolbox/ApiCore/Common/Inject/ExposeAttribute.cs
new file mode 100644
index 0000000..c04fdc4
--- /dev/null
+++ b/WebApi/Gs.Toolbox/ApiCore/Common/Inject/ExposeAttribute.cs
@@ -0,0 +1,12 @@
+锘縩amespace Gs.Toolbox
+{
+ public class ExposeAttribute : Attribute
+ {
+ public ExposeAttribute(Type _type)
+ {
+ type = _type;
+ }
+ public Type type { get; set; }
+
+ }
+}
diff --git a/WebApi/Gs.Toolbox/ApiCore/Common/Inject/InjectTypeChecker.cs b/WebApi/Gs.Toolbox/ApiCore/Common/Inject/InjectTypeChecker.cs
new file mode 100644
index 0000000..875a575
--- /dev/null
+++ b/WebApi/Gs.Toolbox/ApiCore/Common/Inject/InjectTypeChecker.cs
@@ -0,0 +1,36 @@
+锘縩amespace Gs.Toolbox
+{
+ public static class InjectTypeChecker
+ {
+ private static InjectTypeContext context = new InjectTypeContext();
+ public static bool IsImplementInjectType(Type[] types)
+ {
+ foreach (var t in types)
+ {
+ if (context.types.Contains(t))
+ {
+ return true;
+ }
+ }
+ return false;
+ }
+ public static bool IsImplementInjectType(Type type)
+ {
+ return context.types.Contains(type);
+ }
+
+ public static bool IsImplementInjectType(Type[] types, out Type type)
+ {
+ type = null;
+ foreach (var t in types)
+ {
+ if (context.types.Contains(t))
+ {
+ type = t;
+ return true;
+ }
+ }
+ return false;
+ }
+ }
+}
diff --git a/WebApi/Gs.Toolbox/ApiCore/Common/Inject/InjectTypeContext.cs b/WebApi/Gs.Toolbox/ApiCore/Common/Inject/InjectTypeContext.cs
new file mode 100644
index 0000000..85593ba
--- /dev/null
+++ b/WebApi/Gs.Toolbox/ApiCore/Common/Inject/InjectTypeContext.cs
@@ -0,0 +1,16 @@
+锘縰sing Gs.Toolbox;
+
+namespace Gs.Toolbox
+{
+ public class InjectTypeContext
+ {
+ public List<Type> types { get; }
+ public InjectTypeContext()
+ {
+ types = new List<Type>();
+ types.Add(typeof(ITransient));
+ types.Add(typeof(ISingleton));
+ types.Add(typeof(IScope));
+ }
+ }
+}
diff --git a/WebApi/Gs.Toolbox/ApiCore/Common/Inject/InjectTypeManager.cs b/WebApi/Gs.Toolbox/ApiCore/Common/Inject/InjectTypeManager.cs
new file mode 100644
index 0000000..55e6c16
--- /dev/null
+++ b/WebApi/Gs.Toolbox/ApiCore/Common/Inject/InjectTypeManager.cs
@@ -0,0 +1,68 @@
+锘縰sing Microsoft.Extensions.DependencyInjection;
+using Gs.Toolbox;
+
+namespace Gs.Toolbox
+{
+ public static class InjectTypeManager
+ {
+ public static void Inject(IServiceCollection service, Type interfaceType, Type implementType, Type injectType)
+ {
+ if (injectType.FullName.Equals(typeof(ISingleton).FullName))
+ {
+ AddISingleton(service, interfaceType, implementType);
+ }
+ if (injectType.FullName.Equals(typeof(IScope).FullName))
+ {
+ AddIScope(service, interfaceType, implementType);
+ }
+ if (injectType.FullName.Equals(typeof(ITransient).FullName))
+ {
+ AddITransient(service, interfaceType, implementType);
+ }
+
+ }
+ private static void AddISingleton(IServiceCollection service, Type interfaceType, Type implementType)
+ {
+ ImplementTypeThrowException(service, implementType);
+ if (interfaceType == null)
+ {
+ service.AddSingleton(implementType);
+ return;
+ }
+ service.AddSingleton(interfaceType, implementType);
+ }
+
+ private static void ImplementTypeThrowException(IServiceCollection service, Type implementType)
+ {
+ if (implementType == null)
+ {
+ throw new ArgumentNullException(nameof(implementType));
+ }
+ if (service == null)
+ {
+ throw new Exception("ServiceCollection is null,this fail is occur in coustom inject.");
+ }
+ }
+
+ private static void AddIScope(IServiceCollection service, Type interfaceType, Type implementType)
+ {
+ ImplementTypeThrowException(service, implementType);
+ if (interfaceType == null)
+ {
+ service.AddScoped(implementType);
+ return;
+ }
+ service.AddScoped(interfaceType, implementType);
+ }
+ private static void AddITransient(IServiceCollection service, Type interfaceType, Type implementType)
+ {
+ ImplementTypeThrowException(service, implementType);
+ if (interfaceType == null)
+ {
+ service.AddTransient(implementType);
+ return;
+ }
+ service.AddTransient(interfaceType, implementType);
+ }
+ }
+}
diff --git a/WebApi/Gs.Toolbox/ApiCore/Common/Mvc/CustomApplicationModelConvention.cs b/WebApi/Gs.Toolbox/ApiCore/Common/Mvc/CustomApplicationModelConvention.cs
new file mode 100644
index 0000000..bcba014
--- /dev/null
+++ b/WebApi/Gs.Toolbox/ApiCore/Common/Mvc/CustomApplicationModelConvention.cs
@@ -0,0 +1,114 @@
+锘縰sing Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Mvc.ActionConstraints;
+using Microsoft.AspNetCore.Mvc.ApplicationModels;
+using Microsoft.AspNetCore.Mvc.ModelBinding;
+using Gs.Toolbox;
+
+namespace Gs.Toolbox
+{
+ public class CustomApplicationModelConvention : IApplicationModelConvention
+ {
+ public void Apply(ApplicationModel application)
+ {
+ foreach (var controller in application.Controllers)
+ {
+ if (controller.ControllerType.IsAssignableTo(typeof(IRomteService)))
+ {
+ ConfigureApiExplorer(controller);
+ ConfigureSelector(controller);
+ ConfigureParameters(controller);
+ }
+ }
+ }
+ //鐩存帴鎶刟bp浠g爜
+ private void ConfigureParameters(ControllerModel controller)
+ {
+ foreach (var action in controller.Actions)
+ {
+ foreach (var prm in action.Parameters)
+ {
+ if (prm.BindingInfo != null)
+ {
+ continue;
+ }
+
+ if (!TypeHelper.IsPrimitiveExtended(prm.ParameterInfo.ParameterType, includeEnums: true))
+ {
+ if (CanUseFormBodyBinding(action, prm))
+ {
+ prm.BindingInfo = BindingInfo.GetBindingInfo(new[] { new FromBodyAttribute() });
+ }
+ }
+ }
+ }
+ }
+ private bool CanUseFormBodyBinding(ActionModel action, ParameterModel parameter)
+ {
+ if (parameter.ParameterName == "id")
+ {
+ return false;
+ }
+
+ foreach (var selector in action.Selectors)
+ {
+ if (selector.ActionConstraints == null)
+ {
+ continue;
+ }
+
+ foreach (var actionConstraint in selector.ActionConstraints)
+ {
+ var httpMethodActionConstraint = actionConstraint as HttpMethodActionConstraint;
+ if (httpMethodActionConstraint == null)
+ {
+ continue;
+ }
+
+ if (httpMethodActionConstraint.HttpMethods.All(hm => hm.IsIn("GET", "DELETE", "TRACE", "HEAD")))
+ {
+ return false;
+ }
+ }
+ }
+ return true;
+ }
+
+ private void ConfigureSelector(ControllerModel controller)
+ {
+ //鍏堜笉浣跨敤鐗规�э紝鍋氫釜鏈�绠�鍗曠殑
+ var controllerName = controller.ControllerName;
+ //瀹為檯涓婅矾鐢卞嚟鍊熻繕鏄嚜宸卞~琛outeAttribute鐗规��
+ foreach (var action in controller.Actions)
+ {
+ action.Selectors.Clear();
+ var reqMethod = GetRequestMethod(action);
+ action.Selectors.Add(new SelectorModel
+ {
+ AttributeRouteModel = new AttributeRouteModel(new RouteAttribute($"/{controllerName}/{action.ActionName}")),
+ ActionConstraints = { new HttpMethodActionConstraint(new[] { reqMethod }) }
+ });
+ }
+ }
+
+ private string GetRequestMethod(ActionModel action)
+ {
+ var reqM = action.Attributes.OfType<RequestMethodAttribute>().ToList();
+ return reqM.Last()._method.ToString();
+ }
+
+ private void ConfigureApiExplorer(ControllerModel controller)
+ {
+ //灏嗚嚜鍔ㄥ彂鐜扮殑鎺у埗鍣ㄦ樉绀哄嚭鏉�
+ controller.ApiExplorer.IsVisible = true;
+ foreach (var action in controller.Actions)
+ {
+ ConfigureApiExplorer(action);
+ }
+ }
+
+ private void ConfigureApiExplorer(ActionModel action)
+ {
+ action.ApiExplorer.IsVisible = true;
+ }
+ }
+}
diff --git a/WebApi/Gs.Toolbox/ApiCore/Common/Mvc/CustomControllerFeatureProvider.cs b/WebApi/Gs.Toolbox/ApiCore/Common/Mvc/CustomControllerFeatureProvider.cs
new file mode 100644
index 0000000..19d5575
--- /dev/null
+++ b/WebApi/Gs.Toolbox/ApiCore/Common/Mvc/CustomControllerFeatureProvider.cs
@@ -0,0 +1,111 @@
+锘縰sing Microsoft.AspNetCore.Mvc.ApplicationParts;
+using Microsoft.AspNetCore.Mvc.Controllers;
+using System.Reflection;
+using Gs.Toolbox;
+
+namespace Gs.Toolbox
+{
+ /// <summary>
+ /// 鐢ㄦ潵璇嗗埆鎺у埗鍣�
+ /// </summary>
+ public class CustomControllerFeatureProvider : IApplicationFeatureProvider<ControllerFeature>
+ {
+ public void PopulateFeature(IEnumerable<ApplicationPart> parts, ControllerFeature feature)
+ {
+ var assembly = Assembly.GetEntryAssembly();//鑾峰彇鍖呭惈搴旂敤绋嬪簭鍏ュ彛鐐圭殑绋嬪簭闆�
+ var assemblies = assembly.GetReferencedAssemblies();
+ assemblies.Append<AssemblyName>(assembly.GetName());
+ var list = assemblies.ToList();
+ for (var i = 0; i < assemblies.Length; i++)
+ {
+ if (assemblies[i].FullName.Contains("System") ||
+ assemblies[i].FullName.Contains("Microsoft") ||
+ assemblies[i].FullName.Contains("Swashbuckle"))
+ {
+ list.Remove(assemblies[i]);
+ }
+ };
+ ////////////////lu鍔犱笂////////
+ string SearchPath = Gs.Toolbox.AppSettingsHelper.getValueByKey("ServicesPath");
+ var searchFolder = Path.Combine(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location), SearchPath);
+ foreach (var file in Directory.EnumerateFiles(searchFolder, "*.dll", SearchOption.AllDirectories))
+ {
+ try
+ {
+ var assemblyccccc = Assembly.LoadFrom(file);
+ var exportedTypesccc = assemblyccccc.GetExportedTypes();
+ //if (exportedTypes.Any(t => t.IsSubclassOf(typeof(ApiController))))
+ //{
+ // Console.WriteLine("Started service " + assembly.FullName);
+ // builder.RegisterApiControllers(assembly).InstancePerRequest();
+ // }
+ list.Add(assemblyccccc.GetName());
+ }
+ catch (Exception ex)
+ {
+
+ }
+ }
+ ///////////////////////
+ AddController(feature, list.ToArray());
+ }
+
+ private void AddController(ControllerFeature feature, AssemblyName[] assemblies)
+ {
+ if (assemblies.Length == 0)
+ {
+ return;
+ }
+ assemblies.ToList().ForEach(assembly =>
+ {
+ if (assembly.FullName.Contains("System") ||
+ assembly.FullName.Contains("Microsoft") ||
+ assembly.FullName.Contains("Swashbuckle"))
+ {
+ return;
+ }
+ //閫掑綊鑾峰彇controller
+ var assTemp = Assembly.Load(assembly);
+ assTemp.GetTypes().ToList().ForEach(type =>
+ {
+ //濡傛灉瀹炵幇浜咺RomteService鍒欒涓烘槸涓�涓帶鍒跺櫒
+ if (!IsController(type))
+ {
+ return;
+ }
+ feature.Controllers.Add(type.GetTypeInfo());
+ });
+ var a = assTemp.GetReferencedAssemblies();
+ AddController(feature, a);
+ });
+ }
+
+ public bool IsController(Type type)
+ {
+ if (!type.IsClass)
+ {
+ return false;
+ }
+
+ if (type.IsAbstract)
+ {
+ return false;
+ }
+ if (!type.IsPublic)
+ {
+ return false;
+ }
+
+ if (type.ContainsGenericParameters)
+ {
+ return false;
+ }
+
+ if (type.IsAssignableTo(typeof(IRomteService)))
+ {
+ return true;
+ }
+ return false;
+ }
+ }
+}
diff --git a/WebApi/Gs.Toolbox/ApiCore/Common/Mvc/RequestMethodAttribute.cs b/WebApi/Gs.Toolbox/ApiCore/Common/Mvc/RequestMethodAttribute.cs
new file mode 100644
index 0000000..c1bcd5d
--- /dev/null
+++ b/WebApi/Gs.Toolbox/ApiCore/Common/Mvc/RequestMethodAttribute.cs
@@ -0,0 +1,15 @@
+锘縩amespace Gs.Toolbox
+{
+ public class RequestMethodAttribute : Attribute
+ {
+ public RequestMethods _method;
+ public RequestMethodAttribute(RequestMethods method)
+ {
+ _method = method;
+ }
+ public RequestMethodAttribute()
+ {
+ _method = RequestMethods.GET;
+ }
+ }
+}
diff --git a/WebApi/Gs.Toolbox/ApiCore/Common/Mvc/RequestMethods.cs b/WebApi/Gs.Toolbox/ApiCore/Common/Mvc/RequestMethods.cs
new file mode 100644
index 0000000..07d8ff4
--- /dev/null
+++ b/WebApi/Gs.Toolbox/ApiCore/Common/Mvc/RequestMethods.cs
@@ -0,0 +1,8 @@
+锘縩amespace Gs.Toolbox
+{
+ public enum RequestMethods
+ {
+ GET,
+ POST
+ }
+}
diff --git a/WebApi/Gs.Toolbox/ApiCore/Entity/IEntity.cs b/WebApi/Gs.Toolbox/ApiCore/Entity/IEntity.cs
new file mode 100644
index 0000000..a6fe1a1
--- /dev/null
+++ b/WebApi/Gs.Toolbox/ApiCore/Entity/IEntity.cs
@@ -0,0 +1,7 @@
+锘縩amespace Gs.Toolbox
+{
+ internal interface IEntity<T>
+ {
+ T Id { get; set; }
+ }
+}
diff --git a/WebApi/Gs.Toolbox/ApiCore/Extensions/ApplicationBuilderExtension.cs b/WebApi/Gs.Toolbox/ApiCore/Extensions/ApplicationBuilderExtension.cs
new file mode 100644
index 0000000..9020601
--- /dev/null
+++ b/WebApi/Gs.Toolbox/ApiCore/Extensions/ApplicationBuilderExtension.cs
@@ -0,0 +1,78 @@
+锘縰sing System.Reflection;
+using Microsoft.AspNetCore.Builder;
+using Gs.Toolbox;
+
+namespace Gs.Toolbox
+{
+ public static class ApplicationBuilderExtension
+ {
+ public static void AddCustomInject(this WebApplicationBuilder builder)
+ {
+ builder.AddInterfaceInject();
+ }
+ private static List<AssemblyName> GetReferenceCustomAssembliesName(Assembly assembly)
+ {
+ var assembliesName = new List<AssemblyName>();
+ assembliesName.Add(assembly.GetName());
+ assembliesName.AddRange(assembly.GetReferencedAssemblies().ToList());
+ return assembliesName;
+ }
+
+
+ public static void AddInterfaceInject(this WebApplicationBuilder builder)
+ {
+ builder.AddInterfaceInject(Assembly.GetEntryAssembly());
+ }
+ public static void AddInterfaceInject(this WebApplicationBuilder builder, Assembly assembly)
+ {
+ //鏈�绠�鍗曠殑瀹炵幇灏辨槸瀹炵幇浜嗘帴鍙e氨娉ㄥ叆
+ AssemblyIsNullThrowException(assembly);
+ var CustomAssembliesName = GetReferenceCustomAssembliesName(assembly);
+ CustomAssembliesName.ForEach(a =>
+ {
+ var ass = Assembly.Load(a);
+ var type = typeof(object);
+ ass.GetTypes().ToList().ForEach(t =>
+ {
+ if (t.IsClass && InjectTypeChecker.IsImplementInjectType(t.GetInterfaces(), out type))
+ {
+ InjectInContainer(builder, t, type);
+ }
+ });
+ });
+ }
+
+ private static void InjectInContainer(WebApplicationBuilder builder, Type ImplementType, Type injectType)
+ {
+ var attr = ImplementType.GetCustomAttribute<ExposeAttribute>();
+ var firstInterface = ImplementType.GetInterfaces()[0];
+ var services = builder.Services;
+ //濡傛灉娌℃湁浣跨敤鏆撮湶灞炴�э紝绗竴涓帴鍙d负娉ㄥ叆鎺ュ彛锛岀洿鎺ユ敞鍏ュ疄鐜版敞鍏ユ帴鍙g被
+ if (attr == null && InjectTypeChecker.IsImplementInjectType(firstInterface))
+ {
+ InjectTypeManager.Inject(services, null, ImplementType, injectType);
+ }
+ //濡傛灉娌℃湁浣跨敤鏆撮湶灞炴�э紝骞朵笖绗竴涓帴鍙d笉涓烘敞鍏ユ帴鍙o紝鐩存帴浣跨敤绗竴涓帴鍙d綔涓哄澶栨帴鍙�
+ if (attr == null && !InjectTypeChecker.IsImplementInjectType(firstInterface))
+ {
+ InjectTypeManager.Inject(services, firstInterface, ImplementType, injectType);
+ }
+ //濡傛灉浣跨敤浜嗘毚闇插睘鎬э紝鐩存帴娉ㄥ叆灞炴�ч噷闈㈢殑绫诲瀷
+ if (attr != null)
+ {
+ // TODO 瀹归敊澶勭悊,姣斿璇村彧瀹炵幇浜嗕竴涓帴鍙o紝涓旀帴鍙d负娉ㄥ叆鎺ュ彛鎬庝箞鍔烇紵
+ // 鐗规�у啓浜嗗疄鐜扮被鍨嬫�庝箞鍔�
+ InjectTypeManager.Inject(services, attr.type, ImplementType, injectType);
+ }
+ }
+
+
+ private static void AssemblyIsNullThrowException(Assembly assembly)
+ {
+ if (assembly == null)
+ {
+ throw new ArgumentNullException(nameof(assembly));
+ }
+ }
+ }
+}
diff --git a/WebApi/Gs.Toolbox/ApiCore/Extensions/ApplicationExtension.cs b/WebApi/Gs.Toolbox/ApiCore/Extensions/ApplicationExtension.cs
new file mode 100644
index 0000000..37e9727
--- /dev/null
+++ b/WebApi/Gs.Toolbox/ApiCore/Extensions/ApplicationExtension.cs
@@ -0,0 +1,77 @@
+锘縰sing Microsoft.AspNetCore.Builder;
+using Microsoft.AspNetCore.Mvc.ApplicationParts;
+using Microsoft.Extensions.DependencyInjection;
+using Gs.Toolbox;
+
+
+namespace Gs.Toolbox
+{
+ public static class ApplicationExtension
+ {
+ public static void AddCustomController(this WebApplication app)
+ {
+ using (var serviceScope = app.Services.CreateScope())
+ {
+ var services = serviceScope.ServiceProvider;
+ var applicationPartManager = services.GetRequiredService<ApplicationPartManager>();
+ if (applicationPartManager == null)
+ {
+ throw new Exception("鏈湪瀹瑰櫒涓壘鍒癆pplicationPartManager");
+ }
+ applicationPartManager.FeatureProviders.Add(new CustomControllerFeatureProvider());
+ }
+ }
+
+ public static void AddModule<T>(this WebApplication app) where T : IModule
+ {
+ var list = new List<Type>();
+ Rescuise(typeof(T), list);
+ //鍘婚噸锛岀劧鍚庡姞杞介厤缃�
+ var tempList = new List<Type>();
+ foreach (var t in list)
+ {
+ if (!tempList.Contains(t))
+ {
+ tempList.Add(t);
+ }
+ }
+
+ using (var serviceScope = app.Services.CreateScope())
+ {
+ var services = serviceScope.ServiceProvider;
+ var serviceCollection = services.GetRequiredService<IServiceCollection>();
+ execModule(tempList, app, serviceCollection);
+ }
+ }
+
+ private static void execModule(List<Type> tempList, WebApplication app, IServiceCollection serviceCollection)
+ {
+ foreach (var module in tempList)
+ {
+ var mod = (IModule)Activator.CreateInstance(module);
+ mod.ConfigService(serviceCollection);
+ }
+ foreach (var module in tempList)
+ {
+ var mod = (IModule)Activator.CreateInstance(module);
+ mod.ApplicationConfig(app);
+ }
+ }
+
+ public static void Rescuise(Type type, List<Type> list)
+ {
+ var attr = type.GetCustomAttributes(false);
+ if (attr.Length == 0)
+ {
+ list.Add(type);
+ return;
+ }
+ foreach (var a in attr)
+ {
+ var temp = (CustomDependenceAttribute)a;
+ Rescuise(temp.DependType, list);
+ }
+ list.Add(type);
+ }
+ }
+}
diff --git a/WebApi/Gs.Toolbox/ApiCore/Extensions/IServiceCollectionExtension.cs b/WebApi/Gs.Toolbox/ApiCore/Extensions/IServiceCollectionExtension.cs
new file mode 100644
index 0000000..088fae7
--- /dev/null
+++ b/WebApi/Gs.Toolbox/ApiCore/Extensions/IServiceCollectionExtension.cs
@@ -0,0 +1,16 @@
+锘縰sing Microsoft.Extensions.DependencyInjection;
+using Gs.Toolbox;
+
+namespace Gs.Toolbox
+{
+ public static class IServiceCollectionExtension
+ {
+ public static void AddCustomConvention(this IServiceCollection services)
+ {
+ services.AddMvc(options =>
+ {
+ options.Conventions.Add(new CustomApplicationModelConvention());
+ });
+ }
+ }
+}
diff --git a/WebApi/Gs.Toolbox/ApiCore/Extensions/StringExtension.cs b/WebApi/Gs.Toolbox/ApiCore/Extensions/StringExtension.cs
new file mode 100644
index 0000000..c639166
--- /dev/null
+++ b/WebApi/Gs.Toolbox/ApiCore/Extensions/StringExtension.cs
@@ -0,0 +1,14 @@
+锘縩amespace Gs.Toolbox
+{
+ public static class StringExtension
+ {
+ public static bool IsIn(this string str, params string[] ps)
+ {
+ if (ps.Contains(str))
+ {
+ return true;
+ }
+ return false;
+ }
+ }
+}
diff --git a/WebApi/Gs.Toolbox/ApiCore/Group/ApiGroupAttribute.cs b/WebApi/Gs.Toolbox/ApiCore/Group/ApiGroupAttribute.cs
new file mode 100644
index 0000000..2d7e6b0
--- /dev/null
+++ b/WebApi/Gs.Toolbox/ApiCore/Group/ApiGroupAttribute.cs
@@ -0,0 +1,16 @@
+锘縰sing Microsoft.AspNetCore.Mvc.ApiExplorer;
+
+namespace Gs.Toolbox
+{
+ /// <summary>
+ /// swagger鍒嗙粍鐗规��
+ /// </summary>
+ public class ApiGroupAttribute : Attribute, IApiDescriptionGroupNameProvider
+ {
+ public ApiGroupAttribute(ApiGroupNames name)
+ {
+ GroupName = name.ToString();
+ }
+ public string GroupName { get; set; }
+ }
+}
diff --git a/WebApi/Gs.Toolbox/ApiCore/Group/ApiGroupInfoAttribute.cs b/WebApi/Gs.Toolbox/ApiCore/Group/ApiGroupInfoAttribute.cs
new file mode 100644
index 0000000..e2de4d6
--- /dev/null
+++ b/WebApi/Gs.Toolbox/ApiCore/Group/ApiGroupInfoAttribute.cs
@@ -0,0 +1,12 @@
+锘縩amespace Gs.Toolbox
+{
+ /// <summary>
+ /// swagger妯″潡鏋氫妇娉ㄩ噴
+ /// </summary>
+ public class GroupInfoAttribute : Attribute
+ {
+ public string Title { get; set; }
+ public string Version { get; set; }
+ public string Description { get; set; }
+ }
+}
diff --git a/WebApi/Gs.Toolbox/ApiCore/Group/ApiGroupNames.cs b/WebApi/Gs.Toolbox/ApiCore/Group/ApiGroupNames.cs
new file mode 100644
index 0000000..e547600
--- /dev/null
+++ b/WebApi/Gs.Toolbox/ApiCore/Group/ApiGroupNames.cs
@@ -0,0 +1,18 @@
+锘縩amespace Gs.Toolbox
+{
+ /// <summary>
+ /// swagger鍒嗙粍鏋氫妇鍊�
+ /// </summary>
+ public enum ApiGroupNames
+ {
+ [GroupInfo(Title = "Demo妯″潡", Description = "Demo婕旂ず鐢�")]
+ Demo,
+ [GroupInfo(Title = "鐢ㄦ埛妯″潡", Description = "鐢ㄦ埛锛屾潈闄愶紝瑙掕壊锛岃彍鍗曠鐞嗐�侀儴闂ㄧ鐞�")]
+ Auth,
+ [GroupInfo(Title = "浠撳簱妯″潡", Description = "搴撳瓨锛岀洏鐐�")]
+ PerMission,
+ [GroupInfo(Title = "閲囪喘妯″潡", Description = "閲囪喘璁㈠崟")]
+ BillCode20,
+
+ }
+}
diff --git a/WebApi/Gs.Toolbox/AppSettingsHelper.cs b/WebApi/Gs.Toolbox/AppSettingsHelper.cs
new file mode 100644
index 0000000..2980cf2
--- /dev/null
+++ b/WebApi/Gs.Toolbox/AppSettingsHelper.cs
@@ -0,0 +1,17 @@
+锘縰sing Microsoft.Extensions.Configuration;
+namespace Gs.Toolbox
+{
+ public static class AppSettingsHelper
+ {
+ public static string getValueByKey(string key)
+ {
+ // 鍒涘缓閰嶇疆鏋勫缓鍣�
+ var builder = new ConfigurationBuilder()
+ .SetBasePath(Directory.GetCurrentDirectory())
+ .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true);
+ // 鏋勫缓閰嶇疆
+ IConfigurationRoot configuration = builder.Build();
+ return configuration[key];
+ }
+ }
+}
diff --git a/WebApi/Gs.Toolbox/DbHelperSQL.cs b/WebApi/Gs.Toolbox/DbHelperSQL.cs
new file mode 100644
index 0000000..dfaf602
--- /dev/null
+++ b/WebApi/Gs.Toolbox/DbHelperSQL.cs
@@ -0,0 +1,666 @@
+锘縰sing System.Collections;
+using System.Data;
+using System.Data.SqlClient;
+
+namespace Gs.Toolbox
+{
+ /// <summary>
+ /// 鏁版嵁璁块棶绫�
+ /// </summary>
+ public abstract class DbHelperSQL
+ {
+ //鏁版嵁搴撹繛鎺ュ瓧绗︿覆(web.config鏉ラ厤缃�)
+ public static readonly string strConn = AppSettingsHelper.getValueByKey("ConnectionStrings");
+ public DbHelperSQL()
+ {
+
+ }
+ #region 鍏敤鏂规硶
+ /// <summary>
+ /// 鍙栧埌鏈�澶у瓧娈靛��
+ /// </summary>
+ /// <param name="FieldName"></param>
+ /// <param name="TableName"></param>
+ /// <returns></returns>
+ public static int GetMaxID(string FieldName, string TableName)
+ {
+ string strsql = "select max(" + FieldName + ") from " + TableName;
+ object obj = GetSingle(strsql);
+ if (obj == null)
+ {
+ return 0;
+ }
+ else
+ {
+ return int.Parse(obj.ToString());
+ }
+ }
+ /// <summary>
+ /// 鏄惁瀛樺湪鏌愭潯璁板綍
+ /// </summary>
+ /// <param name="strSql"></param>
+ /// <param name="cmdParms"></param>
+ /// <returns></returns>
+ public static bool Exists(string strSql, params SqlParameter[] cmdParms)
+ {
+ object obj = GetSingle(strSql, cmdParms);
+ int cmdresult;
+ if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
+ {
+ cmdresult = 0;
+ }
+ else
+ {
+ cmdresult = int.Parse(obj.ToString());
+ }
+ if (cmdresult == 0)
+ {
+ return false;
+ }
+ else
+ {
+ return true;
+ }
+ }
+ #endregion
+
+ #region 鎵ц绠�鍗昐QL璇彞
+ /// <summary>
+ /// 鎵цSQL璇彞锛岃繑鍥炲奖鍝嶇殑璁板綍鏁�
+ /// </summary>
+ /// <param name="SQLString">SQL璇彞</param>
+ /// <returns>褰卞搷鐨勮褰曟暟</returns>
+ public static int ExecuteSql(string SQLString)
+ {
+ using (SqlConnection connection = new SqlConnection(strConn))
+ {
+ using (SqlCommand cmd = new SqlCommand(SQLString, connection))
+ {
+ try
+ {
+ connection.Open();
+ int rows = cmd.ExecuteNonQuery();
+ return rows;
+ }
+ catch (System.Data.SqlClient.SqlException E)
+ {
+ connection.Close();
+ throw new Exception(E.Message);
+ }
+ }
+ }
+ }
+ /// <summary>
+ /// 鎵ц澶氭潯SQL璇彞锛屽疄鐜版暟鎹簱浜嬪姟銆�
+ /// </summary>
+ /// <param name="SQLStringList">澶氭潯SQL璇彞</param>
+ public static void ExecuteSqlTran(ArrayList SQLStringList)
+ {
+ using (SqlConnection conn = new SqlConnection(strConn))
+ {
+ conn.Open();
+ SqlCommand cmd = new SqlCommand();
+ cmd.Connection = conn;
+ SqlTransaction tx = conn.BeginTransaction();
+ cmd.Transaction = tx;
+ try
+ {
+ for (int n = 0; n < SQLStringList.Count; n++)
+ {
+ string strsql = SQLStringList[n].ToString();
+ if (strsql.Trim().Length > 1)
+ {
+ cmd.CommandText = strsql;
+ cmd.ExecuteNonQuery();
+ }
+ }
+ tx.Commit();
+ }
+ catch (System.Data.SqlClient.SqlException E)
+ {
+ tx.Rollback();
+ throw new Exception(E.Message);
+ }
+ }
+ }
+ /// <summary>
+ /// 鎵ц甯︿竴涓瓨鍌ㄨ繃绋嬪弬鏁扮殑鐨凷QL璇彞銆�
+ /// </summary>
+ /// <param name="SQLString">SQL璇彞</param>
+ /// <param name="content">鍙傛暟鍐呭,姣斿涓�涓瓧娈垫槸鏍煎紡澶嶆潅鐨勬枃绔狅紝鏈夌壒娈婄鍙凤紝鍙互閫氳繃杩欎釜鏂瑰紡娣诲姞</param>
+ /// <returns>褰卞搷鐨勮褰曟暟</returns>
+ public static int ExecuteSql(string SQLString, string content)
+ {
+ using (SqlConnection connection = new SqlConnection(strConn))
+ {
+ SqlCommand cmd = new SqlCommand(SQLString, connection);
+ System.Data.SqlClient.SqlParameter myParameter = new System.Data.SqlClient.SqlParameter("@content", SqlDbType.NText);
+ myParameter.Value = content;
+ cmd.Parameters.Add(myParameter);
+ try
+ {
+ connection.Open();
+ int rows = cmd.ExecuteNonQuery();
+ return rows;
+ }
+ catch (System.Data.SqlClient.SqlException E)
+ {
+ throw new Exception(E.Message);
+ }
+ finally
+ {
+ cmd.Dispose();
+ connection.Close();
+ }
+ }
+ }
+ /// <summary>
+ /// 鍚戞暟鎹簱閲屾彃鍏ュ浘鍍忔牸寮忕殑瀛楁(鍜屼笂闈㈡儏鍐电被浼肩殑鍙︿竴绉嶅疄渚�)
+ /// </summary>
+ /// <param name="strSQL">SQL璇彞</param>
+ /// <param name="fs">鍥惧儚瀛楄妭,鏁版嵁搴撶殑瀛楁绫诲瀷涓篿mage鐨勬儏鍐�</param>
+ /// <returns>褰卞搷鐨勮褰曟暟</returns>
+ public static int ExecuteSqlInsertImg(string strSQL, byte[] fs)
+ {
+ using (SqlConnection connection = new SqlConnection(strConn))
+ {
+ SqlCommand cmd = new SqlCommand(strSQL, connection);
+ System.Data.SqlClient.SqlParameter myParameter = new System.Data.SqlClient.SqlParameter("@fs", SqlDbType.Image);
+ myParameter.Value = fs;
+ cmd.Parameters.Add(myParameter);
+ try
+ {
+ connection.Open();
+ int rows = cmd.ExecuteNonQuery();
+ return rows;
+ }
+ catch (System.Data.SqlClient.SqlException E)
+ {
+ throw new Exception(E.Message);
+ }
+ finally
+ {
+ cmd.Dispose();
+ connection.Close();
+ }
+ }
+ }
+ /// <summary>
+ /// 鎵ц涓�鏉¤绠楁煡璇㈢粨鏋滆鍙ワ紝杩斿洖鏌ヨ缁撴灉锛坥bject锛夈��
+ /// </summary>
+ /// <param name="SQLString">璁$畻鏌ヨ缁撴灉璇彞</param>
+ /// <returns>鏌ヨ缁撴灉锛坥bject锛�</returns>
+ public static object GetSingle(string SQLString)
+ {
+ using (SqlConnection connection = new SqlConnection(strConn))
+ {
+ using (SqlCommand cmd = new SqlCommand(SQLString, connection))
+ {
+ try
+ {
+ connection.Open();
+ object obj = cmd.ExecuteScalar();
+ if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
+ {
+ return null;
+ }
+ else
+ {
+ return obj;
+ }
+ }
+ catch (System.Data.SqlClient.SqlException e)
+ {
+ connection.Close();
+ throw new Exception(e.Message);
+ }
+ }
+ }
+ }
+ /// <summary>
+ /// 鎵ц鏌ヨ璇彞锛岃繑鍥濻qlDataReader
+ /// </summary>
+ /// <param name="strSQL">鏌ヨ璇彞</param>
+ /// <returns>SqlDataReader</returns>
+ public static SqlDataReader ExecuteReader(string strSQL)
+ {
+ SqlConnection connection = new SqlConnection(strConn);
+ SqlCommand cmd = new SqlCommand(strSQL, connection);
+ try
+ {
+ connection.Open();
+ SqlDataReader myReader = cmd.ExecuteReader();
+ return myReader;
+ }
+ catch (System.Data.SqlClient.SqlException e)
+ {
+ throw new Exception(e.Message);
+ }
+
+ }
+ /// <summary>
+ /// 鎵ц鏌ヨ璇彞锛岃繑鍥濪ataSet
+ /// </summary>
+ /// <param name="SQLString">鏌ヨ璇彞</param>
+ /// <returns>DataSet</returns>
+ public static DataSet Query(string SQLString)
+ {
+ using (SqlConnection connection = new SqlConnection(strConn))
+ {
+ DataSet ds = new DataSet();
+ try
+ {
+ connection.Open();
+ SqlDataAdapter command = new SqlDataAdapter(SQLString, connection);
+ command.Fill(ds, "ds");
+ }
+ catch (System.Data.SqlClient.SqlException ex)
+ {
+ throw new Exception(ex.Message);
+ }
+ return ds;
+ }
+ }
+ #endregion
+
+ #region 鎵ц甯﹀弬鏁扮殑SQL璇彞
+ /// <summary>
+ /// 鎵цSQL璇彞锛岃繑鍥炲奖鍝嶇殑璁板綍鏁�
+ /// </summary>
+ /// <param name="SQLString">SQL璇彞</param>
+ /// <returns>褰卞搷鐨勮褰曟暟</returns>
+ public static int ExecuteSql(string SQLString, params SqlParameter[] cmdParms)
+ {
+ using (SqlConnection connection = new SqlConnection(strConn))
+ {
+ using (SqlCommand cmd = new SqlCommand())
+ {
+ try
+ {
+ PrepareCommand(cmd, connection, null, SQLString, cmdParms);
+ int rows = cmd.ExecuteNonQuery();
+ cmd.Parameters.Clear();
+ return rows;
+ }
+ catch (System.Data.SqlClient.SqlException E)
+ {
+ throw new Exception(E.Message);
+ }
+ }
+ }
+ }
+ /// <summary>
+ /// 鎵ц澶氭潯SQL璇彞锛屽疄鐜版暟鎹簱浜嬪姟銆�
+ /// </summary>
+ /// <param name="SQLStringList">SQL璇彞鐨勫搱甯岃〃锛坘ey涓簊ql璇彞锛寁alue鏄璇彞鐨凷qlParameter[]锛�</param>
+ public static void ExecuteSqlTran(Hashtable SQLStringList)
+ {
+ using (SqlConnection conn = new SqlConnection(strConn))
+ {
+ conn.Open();
+ using (SqlTransaction trans = conn.BeginTransaction())
+ {
+ SqlCommand cmd = new SqlCommand();
+ try
+ {
+ //寰幆
+ foreach (DictionaryEntry myDE in SQLStringList)
+ {
+ string cmdText = myDE.Key.ToString();
+ SqlParameter[] cmdParms = (SqlParameter[])myDE.Value;
+ PrepareCommand(cmd, conn, trans, cmdText, cmdParms);
+ int val = cmd.ExecuteNonQuery();
+ cmd.Parameters.Clear();
+
+ //trans.Commit();
+ }
+ trans.Commit();
+ }
+ catch
+ {
+ trans.Rollback();
+ throw;
+ }
+ }
+ }
+ }
+ /// <summary>
+ /// 鎵ц澶氭潯SQL璇彞锛屽疄鐜版暟鎹簱浜嬪姟銆�
+ /// </summary>
+ /// <param name="SQLStringList">SQL璇彞鐨勫搱甯岃〃锛坘ey涓簊ql璇彞锛寁alue鏄璇彞鐨凷qlParameter[]锛�</param>
+ public static int ExecuteSqlTranRtn(Hashtable SQLStringList)
+ {
+ int d = 0;
+ using (SqlConnection conn = new SqlConnection(strConn))
+ {
+ conn.Open();
+ using (SqlTransaction trans = conn.BeginTransaction())
+ {
+ SqlCommand cmd = new SqlCommand();
+ try
+ {
+ //寰幆
+ foreach (DictionaryEntry myDE in SQLStringList)
+ {
+ string cmdText = myDE.Key.ToString();
+ SqlParameter[] cmdParms = (SqlParameter[])myDE.Value;
+ PrepareCommand(cmd, conn, trans, cmdText, cmdParms);
+ int val = cmd.ExecuteNonQuery();
+ d = d + val;
+ cmd.Parameters.Clear();
+
+ //trans.Commit();
+ }
+ trans.Commit();
+ }
+ catch
+ {
+ trans.Rollback();
+ throw;
+ }
+ }
+ }
+ return d;
+ }
+ /// <summary>
+ /// 鎵ц澶氭潯SQL璇彞锛屽疄鐜版暟鎹簱浜嬪姟
+ /// </summary>
+ /// <param name="SQLStringList">SQL璇彞鐨勫搱甯岃〃锛坘ey涓烘爣璇嗭紝value鏄璇彞鐨凷qlParameter[]锛�</param>
+ public static void ExecuteSqlTran(string sqltxt, Hashtable SQLStringList)
+ {
+ using (SqlConnection conn = new SqlConnection(strConn))
+ {
+ conn.Open();
+ using (SqlTransaction trans = conn.BeginTransaction())
+ {
+ SqlCommand cmd = new SqlCommand();
+ try
+ {
+ //寰幆
+ foreach (DictionaryEntry myDE in SQLStringList)
+ {
+ string cmdText = sqltxt;
+ SqlParameter[] cmdParms = (SqlParameter[])myDE.Value;
+ PrepareCommand(cmd, conn, trans, cmdText, cmdParms);
+ int val = cmd.ExecuteNonQuery();
+ cmd.Parameters.Clear();
+ }
+ trans.Commit();
+ }
+ catch
+ {
+ trans.Rollback();
+ throw;
+ }
+ }
+ }
+ }
+ /// <summary>
+ /// 鎵ц涓�鏉¤绠楁煡璇㈢粨鏋滆鍙ワ紝杩斿洖鏌ヨ缁撴灉锛坥bject锛夈��
+ /// </summary>
+ /// <param name="SQLString">璁$畻鏌ヨ缁撴灉璇彞</param>
+ /// <returns>鏌ヨ缁撴灉锛坥bject锛�</returns>
+ public static object GetSingle(string SQLString, params SqlParameter[] cmdParms)
+ {
+ using (SqlConnection connection = new SqlConnection(strConn))
+ {
+ using (SqlCommand cmd = new SqlCommand())
+ {
+ try
+ {
+ PrepareCommand(cmd, connection, null, SQLString, cmdParms);
+ object obj = cmd.ExecuteScalar();
+ cmd.Parameters.Clear();
+ if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
+ {
+ return null;
+ }
+ else
+ {
+ return obj;
+ }
+ }
+ catch (System.Data.SqlClient.SqlException e)
+ {
+ throw new Exception(e.Message);
+ }
+ }
+ }
+ }
+ /// <summary>
+ /// 鎵ц鏌ヨ璇彞锛岃繑鍥濻qlDataReader
+ /// </summary>
+ /// <param name="strSQL">鏌ヨ璇彞</param>
+ /// <returns>SqlDataReader</returns>
+ public static SqlDataReader ExecuteReader(string SQLString, params SqlParameter[] cmdParms)
+ {
+ SqlConnection connection = new SqlConnection(strConn);
+ SqlCommand cmd = new SqlCommand();
+ try
+ {
+ PrepareCommand(cmd, connection, null, SQLString, cmdParms);
+ SqlDataReader myReader = cmd.ExecuteReader();
+ cmd.Parameters.Clear();
+ return myReader;
+ }
+ catch (System.Data.SqlClient.SqlException e)
+ {
+ throw new Exception(e.Message);
+ }
+
+ }
+ /// <summary>
+ /// 鎵ц鏌ヨ璇彞锛岃繑鍥濪ataSet
+ /// </summary>
+ /// <param name="SQLString">鏌ヨ璇彞</param>
+ /// <returns>DataSet</returns>
+ public static DataSet Query(string SQLString, params SqlParameter[] cmdParms)
+ {
+ using (SqlConnection connection = new SqlConnection(strConn))
+ {
+ SqlCommand cmd = new SqlCommand();
+ PrepareCommand(cmd, connection, null, SQLString, cmdParms);
+ using (SqlDataAdapter da = new SqlDataAdapter(cmd))
+ {
+ DataSet ds = new DataSet();
+ try
+ {
+ da.Fill(ds, "ds");
+ cmd.Parameters.Clear();
+ }
+ catch (System.Data.SqlClient.SqlException ex)
+ {
+ throw new Exception(ex.Message);
+ }
+ return ds;
+ }
+ }
+ }
+
+ //private static void PrepareCommand(SqlCommand cmd, SqlConnection conn, SqlTransaction trans, string cmdText, SqlParameter[] cmdParms)
+ //{
+
+ // if (conn.State != ConnectionState.Open)
+ // conn.Open();
+ // cmd.Connection = conn;
+ // cmd.CommandText = cmdText;
+ // if (trans != null)
+ // cmd.Transaction = trans;
+ // cmd.CommandType = CommandType.Text;//cmdType;
+ // if (cmdParms != null)
+ // {
+ // foreach (SqlParameter parameter in cmdParms)
+ // {
+ // if ((parameter.Direction == ParameterDirection.InputOutput || parameter.Direction == ParameterDirection.Input) &&
+ // (parameter.Value == null))
+ // {
+ // parameter.Value = DBNull.Value;
+ // }
+ // cmd.Parameters.Add(parameter);
+ // }
+ // }
+ //}
+ private static void PrepareCommand(SqlCommand cmd, SqlConnection conn, SqlTransaction trans, string cmdText, SqlParameter[] cmdParms)
+ {
+ if (conn.State != ConnectionState.Open)
+ conn.Open();
+ cmd.Connection = conn;
+ cmd.CommandText = cmdText;
+ if (trans != null)
+ cmd.Transaction = trans;
+ cmd.CommandType = CommandType.Text;//cmdType;
+ if (cmdParms != null)
+ {
+ foreach (SqlParameter parm in cmdParms)
+ {
+ //cmd.Parameters.Add(parm);
+ if ((parm.Direction == ParameterDirection.InputOutput || parm.Direction == ParameterDirection.Input) &&
+ (parm.Value == null))
+ {
+ parm.Value = DBNull.Value;
+ }
+ cmd.Parameters.Add(parm);
+ }
+ }
+ }
+ #endregion
+
+ #region 瀛樺偍杩囩▼鎿嶄綔
+ /// <summary>
+ /// 鎵ц瀛樺偍杩囩▼
+ /// </summary>
+ /// <param name="storedProcName">瀛樺偍杩囩▼鍚�</param>
+ /// <param name="parameters">瀛樺偍杩囩▼鍙傛暟</param>
+ /// <returns>SqlDataReader</returns>
+ public static SqlDataReader RunProcedure(string storedProcName, IDataParameter[] parameters)
+ {
+ SqlConnection connection = new SqlConnection(strConn);
+ SqlDataReader returnReader;
+ connection.Open();
+ SqlCommand command = BuildQueryCommand(connection, storedProcName, parameters);
+ command.CommandType = CommandType.StoredProcedure;
+ returnReader = command.ExecuteReader();
+ return returnReader;
+ }
+ /// <summary>
+ /// 鎵ц甯﹁緭鍑哄弬鏁扮殑瀛樺偍杩囩▼
+ /// </summary>
+ /// <param name="storedProcName">瀛樺偍杩囩▼鍚�</param>
+ /// <param name="parameters">瀛樺偍杩囩▼鍙傛暟,OutName 杈撳嚭鍙傛暟鐨勫悕瀛楋紙濡傛灉鏄涓互@涓哄垎鍓茬锛�</param>
+ /// <returns>string(浠鍒嗗壊鐨勮緭鍑哄弬鏁扮殑鍊�)</returns>
+ public static string RunProcedureOut(string storedProcName, IDataParameter[] parameters, string outName)
+ {
+ SqlConnection connection = new SqlConnection(strConn);
+ string returnstring = string.Empty;
+ connection.Open();
+ SqlCommand command = BuildQueryCommand(connection, storedProcName, parameters);
+ command.CommandType = CommandType.StoredProcedure;
+ command.ExecuteNonQuery();
+ string str = string.Empty;
+ //瑙f瀽绌胯繃鏉ョ殑鍙傛暟
+ string[] Arraystr = outName.Split('|');
+ foreach (string st in Arraystr)
+ {
+ string a = st.ToString();
+ if (str == string.Empty)
+ {
+ str = command.Parameters[a].Value.ToString();
+ }
+ else
+ {
+ str = str + "|" + command.Parameters[a].Value.ToString();
+ }
+ }
+ return str;
+ }
+ /// <summary>
+ /// 鎵ц瀛樺偍杩囩▼
+ /// </summary>
+ /// <param name="storedProcName">瀛樺偍杩囩▼鍚�</param>
+ /// <param name="parameters">瀛樺偍杩囩▼鍙傛暟</param>
+ /// <param name="tableName">DataSet缁撴灉涓殑琛ㄥ悕</param>
+ /// <returns>DataSet</returns>
+ public static DataSet RunProcedure(string storedProcName, IDataParameter[] parameters, string tableName)
+ {
+ using (SqlConnection connection = new SqlConnection(strConn))
+ {
+ DataSet dataSet = new DataSet();
+ connection.Open();
+ SqlDataAdapter sqlDA = new SqlDataAdapter();
+ sqlDA.SelectCommand = BuildQueryCommand(connection, storedProcName, parameters);
+ sqlDA.Fill(dataSet, tableName);
+ connection.Close();
+ return dataSet;
+ }
+ }
+ /// <summary>
+ /// 鏋勫缓 SqlCommand 瀵硅薄(鐢ㄦ潵杩斿洖涓�涓粨鏋滈泦锛岃�屼笉鏄竴涓暣鏁板��)
+ /// </summary>
+ /// <param name="connection">鏁版嵁搴撹繛鎺�</param>
+ /// <param name="storedProcName">瀛樺偍杩囩▼鍚�</param>
+ /// <param name="parameters">瀛樺偍杩囩▼鍙傛暟</param>
+ /// <returns>SqlCommand</returns>
+ private static SqlCommand BuildQueryCommand(SqlConnection connection, string storedProcName, IDataParameter[] parameters)
+ {
+ SqlCommand command = new SqlCommand(storedProcName, connection);
+ command.CommandType = CommandType.StoredProcedure;
+ foreach (SqlParameter parameter in parameters)
+ {
+ command.Parameters.Add(parameter);
+ }
+ return command;
+ }
+ /// <summary>
+ /// 鎵ц瀛樺偍杩囩▼锛岃繑鍥炲奖鍝嶇殑琛屾暟
+ /// </summary>
+ /// <param name="storedProcName">瀛樺偍杩囩▼鍚�</param>
+ /// <param name="parameters">瀛樺偍杩囩▼鍙傛暟</param>
+ /// <param name="rowsAffected">褰卞搷鐨勮鏁�</param>
+ /// <returns></returns>
+ public static int RunProcedure(string storedProcName, IDataParameter[] parameters, out int rowsAffected)
+ {
+ using (SqlConnection connection = new SqlConnection(strConn))
+ {
+ int result;
+ connection.Open();
+ SqlCommand command = BuildIntCommand(connection, storedProcName, parameters);
+ rowsAffected = command.ExecuteNonQuery();
+ result = (int)command.Parameters["ReturnValue"].Value;
+ //Connection.Close();
+ return result;
+ }
+ }
+ /// <summary>
+ /// 鎵ц瀛樺偍杩囩▼锛岃繑鍥炲奖鍝嶈鏁�
+ /// </summary>
+ /// <param name="storedProcName">string绫诲瀷瀛樺偍杩囩▼鍚�</param>
+ /// <param name="parameters">SqlParameters[]瀛樺偍杩囩▼鍙傛暟</param>
+ /// <returns>int 褰卞搷琛屾暟</returns>
+ public static int RunProcedure_NonQuery(string storedProcName, IDataParameter[] parameters)
+ {
+ using (SqlConnection connection = new SqlConnection(strConn))
+ {
+ connection.Open();
+ SqlCommand command = BuildQueryCommand(connection, storedProcName, parameters);
+ return (command.ExecuteNonQuery());
+ }
+ }
+ /// <summary>
+ /// 鍒涘缓 SqlCommand 瀵硅薄瀹炰緥(鐢ㄦ潵杩斿洖涓�涓暣鏁板��)
+ /// </summary>
+ /// <param name="storedProcName">瀛樺偍杩囩▼鍚�</param>
+ /// <param name="parameters">瀛樺偍杩囩▼鍙傛暟</param>
+ /// <returns>SqlCommand 瀵硅薄瀹炰緥</returns>
+ private static SqlCommand BuildIntCommand(SqlConnection connection, string storedProcName, IDataParameter[] parameters)
+ {
+ SqlCommand command = BuildQueryCommand(connection, storedProcName, parameters);
+ command.Parameters.Add(new SqlParameter("ReturnValue",
+ SqlDbType.Int, 4, ParameterDirection.ReturnValue,
+ false, 0, 0, string.Empty, DataRowVersion.Default, null));
+ return command;
+ }
+ #endregion
+ }
+}
+
+
diff --git a/WebApi/Gs.Toolbox/Gs.Toolbox.csproj b/WebApi/Gs.Toolbox/Gs.Toolbox.csproj
new file mode 100644
index 0000000..44085bd
--- /dev/null
+++ b/WebApi/Gs.Toolbox/Gs.Toolbox.csproj
@@ -0,0 +1,16 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+ <PropertyGroup>
+ <TargetFramework>net6.0</TargetFramework>
+ <ImplicitUsings>enable</ImplicitUsings>
+ <Nullable>enable</Nullable>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <PackageReference Include="Microsoft.AspNetCore" Version="2.2.0" />
+ <PackageReference Include="Microsoft.AspNetCore.App" Version="2.2.8" />
+ <PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.2.0" />
+ <PackageReference Include="System.Data.SqlClient" Version="4.8.6" />
+ </ItemGroup>
+
+</Project>
diff --git a/WebApi/Gs.Toolbox/LogHelper.cs b/WebApi/Gs.Toolbox/LogHelper.cs
new file mode 100644
index 0000000..7b14cca
--- /dev/null
+++ b/WebApi/Gs.Toolbox/LogHelper.cs
@@ -0,0 +1,41 @@
+锘�
+namespace Gs.Toolbox
+{
+ public class LogHelper
+ {
+ //鍒涘缓鏃ュ織鐩綍
+ private static string path = AppContext.BaseDirectory + Gs.Toolbox.AppSettingsHelper.getValueByKey("LogPath");
+ /**
+ * 鍚戞棩蹇楁枃浠跺啓鍏ヨ皟璇曚俊鎭�
+ * @param className 绫诲悕
+ * @param content 鍐欏叆鍐呭
+ */
+ public static void Debug(string className, string content)
+ {
+ WriteLog("DEBUG", className, content);
+ }
+
+ /**
+ * 瀹為檯鐨勫啓鏃ュ織鎿嶄綔
+ * @param type 鏃ュ織璁板綍绫诲瀷
+ * @param className 绫诲悕
+ * @param content 鍐欏叆鍐呭
+ */
+ protected static void WriteLog(string type, string className, string content)
+ {
+ if (!Directory.Exists(path))//濡傛灉鏃ュ織鐩綍涓嶅瓨鍦ㄥ氨鍒涘缓
+ {
+ Directory.CreateDirectory(path);
+ }
+ string time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff");//鑾峰彇褰撳墠绯荤粺鏃堕棿
+ string filename = path + "/" + DateTime.Now.ToString("yyyy-MM-dd") + ".log";//鐢ㄦ棩鏈熷鏃ュ織鏂囦欢鍛藉悕
+ //鍒涘缓鎴栨墦寮�鏃ュ織鏂囦欢锛屽悜鏃ュ織鏂囦欢鏈熬杩藉姞璁板綍
+ StreamWriter mySw = File.AppendText(filename);
+ //鍚戞棩蹇楁枃浠跺啓鍏ュ唴瀹�
+ string write_content = time + " " + type + " " + className + ": " + content;
+ mySw.WriteLine(write_content);
+ //鍏抽棴鏃ュ織鏂囦欢
+ mySw.Close();
+ }
+ }
+}
\ No newline at end of file
diff --git a/WebApi/Gs.Toolbox/ResponseResult.cs b/WebApi/Gs.Toolbox/ResponseResult.cs
new file mode 100644
index 0000000..fc2aa9a
--- /dev/null
+++ b/WebApi/Gs.Toolbox/ResponseResult.cs
@@ -0,0 +1,110 @@
+锘縰sing Newtonsoft.Json;
+
+namespace Gs.Toolbox
+{
+ public class ReturnDto<T>
+ {
+ public ReturnDto()
+ {
+ RtnData = default(T);
+ RtnCode = ReturnCode.Default;
+ RtnMsg = string.Empty;
+ }
+ [JsonProperty(DefaultValueHandling = DefaultValueHandling.Ignore, NullValueHandling = NullValueHandling.Ignore, PropertyName = "RtnCode")]
+ public ReturnCode RtnCode { set; get; }
+
+ [JsonProperty(NullValueHandling = NullValueHandling.Include, PropertyName = "RtnData")]
+ public T RtnData { set; get; }
+
+ [JsonProperty(DefaultValueHandling = DefaultValueHandling.Ignore, NullValueHandling = NullValueHandling.Ignore, PropertyName = "RtnMsg")]
+ public string RtnMsg { get; set; }
+
+
+ /// <summary>
+ /// 蹇�熻繑鍥炴暟鎹�
+ /// </summary>
+ /// <typeparam name="T"></typeparam>
+ /// <param name="t"></param>
+ /// <returns></returns>
+ public static ReturnDto<T> QuickReturn<T>(T t, ReturnCode code, string msg)
+ {
+ ReturnDto<T> result = new ReturnDto<T>();
+ result.RtnData = t;
+ result.RtnCode = code;
+ result.RtnMsg = msg;
+ return result;
+ }
+ }
+
+ public enum ReturnCode : int
+ {
+ Default = -100,//榛樿
+ Unauthorized = -101,//闈炴硶璋冪敤
+ Exception = -102,//绯荤粺浠g爜寮傚父
+ Success = 1 //鎴愬姛
+ }
+
+ public class PageList<t>
+ {
+ /// <summary>
+ /// 鍒楄〃
+ /// </summary>
+ public List<t> list;
+ /// <summary>
+ /// 鎬婚〉鏁�
+ /// </summary>
+ public int pages;
+ /// <summary>
+ /// 鎬昏褰曟暟
+ /// </summary>
+ public int total;
+ /// <summary>
+ /// 姣忛〉澶у皬
+ /// </summary>
+ public int everyPageSize;
+ /// <summary>
+ /// 鎵╁睍鐢紝鍗曟枃鏈紝姣斿閲戦鍚堣绛夊叾瀹冮」鐩�
+ /// </summary>
+ public string? extendText;
+ /// <summary>
+ /// 鎵╁睍鐢紝鍒楄〃
+ /// </summary>
+ public List<dynamic>? extendList;
+ }
+
+ /// <summary>
+ /// 鏌ヨ瀹炰綋
+ /// </summary>
+ public class PageQuery
+ {
+ /// <summary>
+ /// 褰撳墠椤�
+ /// </summary>
+ public int currentPage { get; set; }
+
+ /// <summary>
+ /// 姣忛〉澶у皬
+ /// </summary>
+ public int everyPageSize { get; set; }
+
+ /// <summary>
+ /// 鎺掑簭鍚�
+ /// </summary>
+ public string sortName { get; set; }
+
+ /// <summary>
+ /// 鎺掑簭鏂瑰紡
+ /// </summary>
+ public string sortOrder { get; set; }
+
+ /// <summary>
+ /// 鏌ヨ鍏抽敭瀛�
+ /// </summary>
+ public string keyWord { get; set; }
+
+ /// <summary>
+ /// 鏌ヨ琛ㄨ揪寮�
+ /// </summary>
+ public string keyWhere { get; set; }
+ }
+}
diff --git a/WebApi/GsMesSolution.sln b/WebApi/GsMesSolution.sln
new file mode 100644
index 0000000..e89d4a8
--- /dev/null
+++ b/WebApi/GsMesSolution.sln
@@ -0,0 +1,43 @@
+锘�
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.10.35122.118
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Gs.HostIIS", "Gs.HostIIS\Gs.HostIIS.csproj", "{4FCE647C-F1FD-43DC-A92D-88DB414D10C7}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Gs.Toolbox", "Gs.Toolbox\Gs.Toolbox.csproj", "{AAC197B4-CE8C-4D21-A2A9-73D383859668}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Gs.Demo", "Gs.Demo\Gs.Demo.csproj", "{D6D8C8B7-2BB2-4D5C-B83C-7412875C9BB6}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Gs.User", "Gs.User\Gs.User.csproj", "{C77F6A1D-0CEA-40DE-9B03-C59B581531E8}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {4FCE647C-F1FD-43DC-A92D-88DB414D10C7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {4FCE647C-F1FD-43DC-A92D-88DB414D10C7}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {4FCE647C-F1FD-43DC-A92D-88DB414D10C7}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {4FCE647C-F1FD-43DC-A92D-88DB414D10C7}.Release|Any CPU.Build.0 = Release|Any CPU
+ {AAC197B4-CE8C-4D21-A2A9-73D383859668}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {AAC197B4-CE8C-4D21-A2A9-73D383859668}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {AAC197B4-CE8C-4D21-A2A9-73D383859668}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {AAC197B4-CE8C-4D21-A2A9-73D383859668}.Release|Any CPU.Build.0 = Release|Any CPU
+ {D6D8C8B7-2BB2-4D5C-B83C-7412875C9BB6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {D6D8C8B7-2BB2-4D5C-B83C-7412875C9BB6}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {D6D8C8B7-2BB2-4D5C-B83C-7412875C9BB6}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {D6D8C8B7-2BB2-4D5C-B83C-7412875C9BB6}.Release|Any CPU.Build.0 = Release|Any CPU
+ {C77F6A1D-0CEA-40DE-9B03-C59B581531E8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {C77F6A1D-0CEA-40DE-9B03-C59B581531E8}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {C77F6A1D-0CEA-40DE-9B03-C59B581531E8}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {C77F6A1D-0CEA-40DE-9B03-C59B581531E8}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {B05B2921-6384-4E90-B094-84B81629D9AB}
+ EndGlobalSection
+EndGlobal
--
Gitblit v1.9.3