diff --git a/ClientsLibrary/AccountSupport/AccountLogin.cs b/ClientsLibrary/AccountSupport/AccountLogin.cs index 5397bec..8d9190f 100644 --- a/ClientsLibrary/AccountSupport/AccountLogin.cs +++ b/ClientsLibrary/AccountSupport/AccountLogin.cs @@ -85,10 +85,11 @@ namespace ClientsLibrary // 包装数据 JObject json = new JObject { - { UserAccount.UserNameText, new JValue(userName) }, - { UserAccount.PasswordText, new JValue(password) }, - { UserAccount.LoginWayText, new JValue(clientType) }, - { UserAccount.DeviceUniqueID, new JValue(UserClient.JsonSettings.SystemInfo) } + { UserAccount.UserNameText, new JValue(userName) }, // 用户名 + { UserAccount.PasswordText, new JValue(password) }, // 密码 + { UserAccount.LoginWayText, new JValue(clientType) }, // 登录方式 + { UserAccount.DeviceUniqueID, new JValue(UserClient.JsonSettings.SystemInfo) }, // 客户端唯一ID + { UserAccount.FrameworkVersion, new JValue(SoftBasic.FrameworkVersion.ToString()) } // 客户端框架版本 }; result = UserClient.Net_simplify_client.ReadFromServer(CommonHeadCode.SimplifyHeadCode.账户检查, json.ToString()); if (result.IsSuccess) @@ -125,7 +126,7 @@ namespace ClientsLibrary // 延时 Thread.Sleep(200); - result = UserClient.Net_simplify_client.ReadFromServer(CommonLibrary.CommonHeadCode.SimplifyHeadCode.更新检查); + result = UserClient.Net_simplify_client.ReadFromServer(CommonHeadCode.SimplifyHeadCode.更新检查); if (result.IsSuccess) { // 服务器应该返回服务器的版本号 diff --git a/ClientsLibrary/AccountSupport/FormAccountDetails.Designer.cs b/ClientsLibrary/AccountSupport/FormAccountDetails.Designer.cs index 7f2c0f6..231694c 100644 --- a/ClientsLibrary/AccountSupport/FormAccountDetails.Designer.cs +++ b/ClientsLibrary/AccountSupport/FormAccountDetails.Designer.cs @@ -55,10 +55,16 @@ this.textBox_UserName = new System.Windows.Forms.TextBox(); this.label1 = new System.Windows.Forms.Label(); this.groupBox2 = new System.Windows.Forms.GroupBox(); - this.userButton2 = new HslCommunication.Controls.UserButton(); - this.userButton1 = new HslCommunication.Controls.UserButton(); + this.userButton_delete = new HslCommunication.Controls.UserButton(); + this.userButton_download = new HslCommunication.Controls.UserButton(); this.userButton_upload = new HslCommunication.Controls.UserButton(); this.treeView1 = new System.Windows.Forms.TreeView(); + this.textBox_file_name = new System.Windows.Forms.TextBox(); + this.label_fileName = new System.Windows.Forms.Label(); + this.textBox_file_size = new System.Windows.Forms.TextBox(); + this.label_fileSize = new System.Windows.Forms.Label(); + this.textBox_file_uploadTime = new System.Windows.Forms.TextBox(); + this.label_uploadTime = new System.Windows.Forms.Label(); this.groupBox1.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.pictureBox_UserPortrait)).BeginInit(); this.groupBox2.SuspendLayout(); @@ -322,8 +328,14 @@ // this.groupBox2.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) | System.Windows.Forms.AnchorStyles.Left))); - this.groupBox2.Controls.Add(this.userButton2); - this.groupBox2.Controls.Add(this.userButton1); + this.groupBox2.Controls.Add(this.textBox_file_uploadTime); + this.groupBox2.Controls.Add(this.label_uploadTime); + this.groupBox2.Controls.Add(this.textBox_file_size); + this.groupBox2.Controls.Add(this.label_fileSize); + this.groupBox2.Controls.Add(this.textBox_file_name); + this.groupBox2.Controls.Add(this.label_fileName); + this.groupBox2.Controls.Add(this.userButton_delete); + this.groupBox2.Controls.Add(this.userButton_download); this.groupBox2.Controls.Add(this.userButton_upload); this.groupBox2.Controls.Add(this.treeView1); this.groupBox2.Location = new System.Drawing.Point(322, 12); @@ -333,35 +345,35 @@ this.groupBox2.TabStop = false; this.groupBox2.Text = "个人文件,支持拖拽上传,双击下载"; // - // userButton2 + // userButton_delete // - this.userButton2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.userButton2.BackColor = System.Drawing.Color.Transparent; - this.userButton2.CustomerInformation = ""; - this.userButton2.EnableColor = System.Drawing.Color.FromArgb(((int)(((byte)(190)))), ((int)(((byte)(190)))), ((int)(((byte)(190))))); - this.userButton2.Font = new System.Drawing.Font("微软雅黑", 9F); - this.userButton2.Location = new System.Drawing.Point(297, 460); - this.userButton2.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); - this.userButton2.Name = "userButton2"; - this.userButton2.Size = new System.Drawing.Size(65, 23); - this.userButton2.TabIndex = 10; - this.userButton2.UIText = "删除"; - this.userButton2.Click += new System.EventHandler(this.userButton2_Click); + this.userButton_delete.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.userButton_delete.BackColor = System.Drawing.Color.Transparent; + this.userButton_delete.CustomerInformation = ""; + this.userButton_delete.EnableColor = System.Drawing.Color.FromArgb(((int)(((byte)(190)))), ((int)(((byte)(190)))), ((int)(((byte)(190))))); + this.userButton_delete.Font = new System.Drawing.Font("微软雅黑", 9F); + this.userButton_delete.Location = new System.Drawing.Point(297, 460); + this.userButton_delete.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); + this.userButton_delete.Name = "userButton_delete"; + this.userButton_delete.Size = new System.Drawing.Size(65, 23); + this.userButton_delete.TabIndex = 10; + this.userButton_delete.UIText = "删除"; + this.userButton_delete.Click += new System.EventHandler(this.userButton2_Click); // - // userButton1 + // userButton_download // - this.userButton1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.userButton1.BackColor = System.Drawing.Color.Transparent; - this.userButton1.CustomerInformation = ""; - this.userButton1.EnableColor = System.Drawing.Color.FromArgb(((int)(((byte)(190)))), ((int)(((byte)(190)))), ((int)(((byte)(190))))); - this.userButton1.Font = new System.Drawing.Font("微软雅黑", 9F); - this.userButton1.Location = new System.Drawing.Point(81, 460); - this.userButton1.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); - this.userButton1.Name = "userButton1"; - this.userButton1.Size = new System.Drawing.Size(65, 23); - this.userButton1.TabIndex = 9; - this.userButton1.UIText = "下载"; - this.userButton1.Click += new System.EventHandler(this.userButton1_Click); + this.userButton_download.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.userButton_download.BackColor = System.Drawing.Color.Transparent; + this.userButton_download.CustomerInformation = ""; + this.userButton_download.EnableColor = System.Drawing.Color.FromArgb(((int)(((byte)(190)))), ((int)(((byte)(190)))), ((int)(((byte)(190))))); + this.userButton_download.Font = new System.Drawing.Font("微软雅黑", 9F); + this.userButton_download.Location = new System.Drawing.Point(81, 460); + this.userButton_download.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); + this.userButton_download.Name = "userButton_download"; + this.userButton_download.Size = new System.Drawing.Size(65, 23); + this.userButton_download.TabIndex = 9; + this.userButton_download.UIText = "下载"; + this.userButton_download.Click += new System.EventHandler(this.userButton1_Click); // // userButton_upload // @@ -390,12 +402,74 @@ this.treeView1.Nodes.AddRange(new System.Windows.Forms.TreeNode[] { treeNode1}); this.treeView1.ShowLines = false; - this.treeView1.Size = new System.Drawing.Size(353, 429); + this.treeView1.Size = new System.Drawing.Size(353, 377); this.treeView1.TabIndex = 0; + this.treeView1.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.treeView1_AfterSelect); this.treeView1.DragDrop += new System.Windows.Forms.DragEventHandler(this.treeView1_DragDrop); this.treeView1.DragEnter += new System.Windows.Forms.DragEventHandler(this.treeView1_DragEnter); this.treeView1.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.treeView1_MouseDoubleClick); // + // textBox_file_name + // + this.textBox_file_name.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.textBox_file_name.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.textBox_file_name.Location = new System.Drawing.Point(66, 405); + this.textBox_file_name.Name = "textBox_file_name"; + this.textBox_file_name.ReadOnly = true; + this.textBox_file_name.Size = new System.Drawing.Size(297, 23); + this.textBox_file_name.TabIndex = 12; + // + // label_fileName + // + this.label_fileName.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.label_fileName.AutoSize = true; + this.label_fileName.Location = new System.Drawing.Point(7, 407); + this.label_fileName.Name = "label_fileName"; + this.label_fileName.Size = new System.Drawing.Size(56, 17); + this.label_fileName.TabIndex = 11; + this.label_fileName.Text = "文件名:"; + // + // textBox_file_size + // + this.textBox_file_size.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.textBox_file_size.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.textBox_file_size.Location = new System.Drawing.Point(66, 432); + this.textBox_file_size.Name = "textBox_file_size"; + this.textBox_file_size.ReadOnly = true; + this.textBox_file_size.Size = new System.Drawing.Size(110, 23); + this.textBox_file_size.TabIndex = 14; + // + // label_fileSize + // + this.label_fileSize.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.label_fileSize.AutoSize = true; + this.label_fileSize.Location = new System.Drawing.Point(7, 434); + this.label_fileSize.Name = "label_fileSize"; + this.label_fileSize.Size = new System.Drawing.Size(44, 17); + this.label_fileSize.TabIndex = 13; + this.label_fileSize.Text = "大小:"; + // + // textBox_file_uploadTime + // + this.textBox_file_uploadTime.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.textBox_file_uploadTime.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.textBox_file_uploadTime.Location = new System.Drawing.Point(252, 432); + this.textBox_file_uploadTime.Name = "textBox_file_uploadTime"; + this.textBox_file_uploadTime.ReadOnly = true; + this.textBox_file_uploadTime.Size = new System.Drawing.Size(111, 23); + this.textBox_file_uploadTime.TabIndex = 16; + // + // label_uploadTime + // + this.label_uploadTime.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.label_uploadTime.AutoSize = true; + this.label_uploadTime.Location = new System.Drawing.Point(182, 434); + this.label_uploadTime.Name = "label_uploadTime"; + this.label_uploadTime.Size = new System.Drawing.Size(68, 17); + this.label_uploadTime.TabIndex = 15; + this.label_uploadTime.Text = "上传日期:"; + // // FormAccountDetails // this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 17F); @@ -417,6 +491,7 @@ this.groupBox1.PerformLayout(); ((System.ComponentModel.ISupportInitialize)(this.pictureBox_UserPortrait)).EndInit(); this.groupBox2.ResumeLayout(false); + this.groupBox2.PerformLayout(); this.ResumeLayout(false); } @@ -448,10 +523,16 @@ private System.Windows.Forms.Label label1; private System.Windows.Forms.GroupBox groupBox2; private System.Windows.Forms.TreeView treeView1; - private HslCommunication.Controls.UserButton userButton2; - private HslCommunication.Controls.UserButton userButton1; + private HslCommunication.Controls.UserButton userButton_delete; + private HslCommunication.Controls.UserButton userButton_download; private HslCommunication.Controls.UserButton userButton_upload; private System.Windows.Forms.PictureBox pictureBox_UserPortrait; private System.Windows.Forms.Label label12; + private System.Windows.Forms.TextBox textBox_file_uploadTime; + private System.Windows.Forms.Label label_uploadTime; + private System.Windows.Forms.TextBox textBox_file_size; + private System.Windows.Forms.Label label_fileSize; + private System.Windows.Forms.TextBox textBox_file_name; + private System.Windows.Forms.Label label_fileName; } } \ No newline at end of file diff --git a/ClientsLibrary/AccountSupport/FormAccountDetails.cs b/ClientsLibrary/AccountSupport/FormAccountDetails.cs index 874e8cf..51008fb 100644 --- a/ClientsLibrary/AccountSupport/FormAccountDetails.cs +++ b/ClientsLibrary/AccountSupport/FormAccountDetails.cs @@ -12,6 +12,7 @@ using System.Windows.Forms; using HslCommunication; using HslCommunication.BasicFramework; using System.IO; +using ClientsLibrary.FileSupport; namespace ClientsLibrary { @@ -67,12 +68,11 @@ namespace ClientsLibrary #endregion - #region 头像加载显示块 + #region Load Portrait public UserPortrait UserPortrait { get; } - private void pictureBox_UserPortrait_Click(object sender, EventArgs e) { UserPortrait.ChangePortrait(LoadLargeProtrait,UnloadLargeProtrait); @@ -115,7 +115,7 @@ namespace ClientsLibrary #endregion - #region 个人文件管理块 + #region Download FileNames public void DownloadUserFileNames() { @@ -125,16 +125,17 @@ namespace ClientsLibrary // 向服务器请求自身的文件列表 OperateResult result = UserClient.Net_File_Client.DownloadPathFileNames( - out string[] files, "Files", "Personal", UserClient.UserAccount.UserName + out GroupFileItem[] files, "Files", "Personal", UserClient.UserAccount.UserName ); if (result.IsSuccess) { if (files != null) { - foreach(var m in files) + foreach(var file in files) { - TreeNode node = new TreeNode(m, 1, 1); + TreeNode node = new TreeNode(file.FileName, 1, 1); + node.Tag = file; treeView1.Nodes[0].Nodes.Add(node); } @@ -153,6 +154,11 @@ namespace ClientsLibrary treeView1.ExpandAll(); } + + #endregion + + #region Upload Support + private void userButton_upload_Click(object sender, EventArgs e) { // 上传个人文件 @@ -178,6 +184,11 @@ namespace ClientsLibrary DownloadUserFileNames(); } + #endregion + + #region Download File Support + + private void treeView1_MouseDoubleClick(object sender, MouseEventArgs e) { // 双击下载 @@ -212,16 +223,22 @@ namespace ClientsLibrary } } + #endregion + + #region Delete File Support + private void userButton2_Click(object sender, EventArgs e) { // 删除选中文件 TreeNode treeNode = treeView1.SelectedNode; if (treeNode.Name != "files_root") { + // 删除文件前要先进行密码验证 using (FormPasswordCheck passwordCheck = new FormPasswordCheck(UserClient.UserAccount.Password)) { if (passwordCheck.ShowDialog() == DialogResult.OK) { + // 密码验证已经通过 OperateResult result = UserClient.Net_File_Client.DeleteFile( treeNode.Text, "Files", @@ -241,13 +258,9 @@ namespace ClientsLibrary } } - - - #endregion - #region 文件拖拽上传块 - + #region Drag File Upload private void treeView1_DragDrop(object sender, DragEventArgs e) { @@ -308,6 +321,20 @@ namespace ClientsLibrary } + #endregion + + #region Tree File Select + + private void treeView1_AfterSelect(object sender, TreeViewEventArgs e) + { + if(e.Node.Tag is GroupFileItem file) + { + textBox_file_name.Text = file.FileName; + textBox_file_size.Text = file.GetTextFromFileSize(); + textBox_file_uploadTime.Text = file.UploadTime.ToLocalTime().ToShortDateString(); + } + } + #endregion } } diff --git a/ClientsLibrary/AccountSupport/UserPortrait.cs b/ClientsLibrary/AccountSupport/UserPortrait.cs index f75883a..bc460d7 100644 --- a/ClientsLibrary/AccountSupport/UserPortrait.cs +++ b/ClientsLibrary/AccountSupport/UserPortrait.cs @@ -1,4 +1,5 @@ -using CommonLibrary; +using ClientsLibrary.FileSupport; +using CommonLibrary; using HslCommunication; using HslCommunication.BasicFramework; using HslCommunication.Enthernet; diff --git a/ClientsLibrary/ClientsLibrary.csproj b/ClientsLibrary/ClientsLibrary.csproj index 6830405..f230e9d 100644 --- a/ClientsLibrary/ClientsLibrary.csproj +++ b/ClientsLibrary/ClientsLibrary.csproj @@ -92,6 +92,31 @@ FormConfiguration.cs + + UserControl + + + FileOperateControl.cs + + + + UserControl + + + FileItemShow.cs + + + Form + + + FormFileOperate.cs + + + Form + + + FormSimplyFileUpload.cs + Form @@ -141,6 +166,18 @@ FormConfiguration.cs + + FileItemShow.cs + + + FileOperateControl.cs + + + FormFileOperate.cs + + + FormSimplyFileUpload.cs + FormLogView.cs @@ -161,5 +198,324 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ClientsLibrary/Configuration/GeneralConfiguration.Designer.cs b/ClientsLibrary/Configuration/GeneralConfiguration.Designer.cs index 27c0cf8..ff4807e 100644 --- a/ClientsLibrary/Configuration/GeneralConfiguration.Designer.cs +++ b/ClientsLibrary/Configuration/GeneralConfiguration.Designer.cs @@ -31,6 +31,7 @@ this.checkBox1 = new System.Windows.Forms.CheckBox(); this.panel1 = new System.Windows.Forms.Panel(); this.userButton2 = new HslCommunication.Controls.UserButton(); + this.checkBox2 = new System.Windows.Forms.CheckBox(); this.panel1.SuspendLayout(); this.SuspendLayout(); // @@ -50,6 +51,7 @@ | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); this.panel1.AutoScroll = true; + this.panel1.Controls.Add(this.checkBox2); this.panel1.Controls.Add(this.checkBox1); this.panel1.Location = new System.Drawing.Point(0, 0); this.panel1.Name = "panel1"; @@ -71,6 +73,16 @@ this.userButton2.UIText = "保存"; this.userButton2.Click += new System.EventHandler(this.userButton2_Click); // + // checkBox2 + // + this.checkBox2.AutoSize = true; + this.checkBox2.Location = new System.Drawing.Point(3, 30); + this.checkBox2.Name = "checkBox2"; + this.checkBox2.Size = new System.Drawing.Size(231, 21); + this.checkBox2.TabIndex = 1; + this.checkBox2.Text = "是否允许框架版本不匹配的客户端登录"; + this.checkBox2.UseVisualStyleBackColor = true; + // // GeneralConfiguration // this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 17F); @@ -93,5 +105,6 @@ private System.Windows.Forms.CheckBox checkBox1; private System.Windows.Forms.Panel panel1; private HslCommunication.Controls.UserButton userButton2; + private System.Windows.Forms.CheckBox checkBox2; } } diff --git a/ClientsLibrary/Configuration/GeneralConfiguration.cs b/ClientsLibrary/Configuration/GeneralConfiguration.cs index 2358b19..4f64a31 100644 --- a/ClientsLibrary/Configuration/GeneralConfiguration.cs +++ b/ClientsLibrary/Configuration/GeneralConfiguration.cs @@ -40,6 +40,7 @@ namespace ClientsLibrary.Configuration JObject json = new JObject { { "AllowUserMulti", new JValue(checkBox1.Checked) }, + { "AllowFrameLogin", new JValue(checkBox2.Checked) }, }; OperateResultString result = UserClient.Net_simplify_client.ReadFromServer( diff --git a/ClientsLibrary/FileSupport/FileItemShow.Designer.cs b/ClientsLibrary/FileSupport/FileItemShow.Designer.cs new file mode 100644 index 0000000..756a264 --- /dev/null +++ b/ClientsLibrary/FileSupport/FileItemShow.Designer.cs @@ -0,0 +1,193 @@ +namespace ClientsLibrary.FileSupport +{ + partial class FileItemShow + { + /// + /// 必需的设计器变量。 + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 清理所有正在使用的资源。 + /// + /// 如果应释放托管资源,为 true;否则为 false。 + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region 组件设计器生成的代码 + + /// + /// 设计器支持所需的方法 - 不要修改 + /// 使用代码编辑器修改此方法的内容。 + /// + private void InitializeComponent() + { + this.label_download_times = new System.Windows.Forms.Label(); + this.label_upload_name = new System.Windows.Forms.Label(); + this.progressBar1 = new System.Windows.Forms.ProgressBar(); + this.linkLabel_download = new System.Windows.Forms.LinkLabel(); + this.linkLabel_delete = new System.Windows.Forms.LinkLabel(); + this.label_file_date = new System.Windows.Forms.Label(); + this.label_file_size = new System.Windows.Forms.Label(); + this.label_file_mark = new System.Windows.Forms.Label(); + this.label_file_name = new System.Windows.Forms.Label(); + this.pictureBox_file = new System.Windows.Forms.PictureBox(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox_file)).BeginInit(); + this.SuspendLayout(); + // + // label_download_times + // + this.label_download_times.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.label_download_times.AutoSize = true; + this.label_download_times.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label_download_times.Location = new System.Drawing.Point(390, 20); + this.label_download_times.Name = "label_download_times"; + this.label_download_times.Size = new System.Drawing.Size(56, 17); + this.label_download_times.TabIndex = 19; + this.label_download_times.Text = "下载数:"; + // + // label_upload_name + // + this.label_upload_name.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.label_upload_name.AutoSize = true; + this.label_upload_name.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label_upload_name.Location = new System.Drawing.Point(276, 20); + this.label_upload_name.Name = "label_upload_name"; + this.label_upload_name.Size = new System.Drawing.Size(56, 17); + this.label_upload_name.TabIndex = 18; + this.label_upload_name.Text = "上传人:"; + // + // progressBar1 + // + this.progressBar1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.progressBar1.Location = new System.Drawing.Point(4, 37); + this.progressBar1.Name = "progressBar1"; + this.progressBar1.Size = new System.Drawing.Size(492, 4); + this.progressBar1.TabIndex = 17; + // + // linkLabel_download + // + this.linkLabel_download.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.linkLabel_download.AutoSize = true; + this.linkLabel_download.Enabled = false; + this.linkLabel_download.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.linkLabel_download.Location = new System.Drawing.Point(508, 20); + this.linkLabel_download.Name = "linkLabel_download"; + this.linkLabel_download.Size = new System.Drawing.Size(32, 17); + this.linkLabel_download.TabIndex = 16; + this.linkLabel_download.TabStop = true; + this.linkLabel_download.Text = "下载"; + this.linkLabel_download.Click += new System.EventHandler(this.linkLabel_download_Click); + // + // linkLabel_delete + // + this.linkLabel_delete.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.linkLabel_delete.AutoSize = true; + this.linkLabel_delete.Enabled = false; + this.linkLabel_delete.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.linkLabel_delete.Location = new System.Drawing.Point(508, 4); + this.linkLabel_delete.Name = "linkLabel_delete"; + this.linkLabel_delete.Size = new System.Drawing.Size(32, 17); + this.linkLabel_delete.TabIndex = 15; + this.linkLabel_delete.TabStop = true; + this.linkLabel_delete.Text = "删除"; + this.linkLabel_delete.Click += new System.EventHandler(this.linkLabel_delete_Click); + // + // label_file_date + // + this.label_file_date.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.label_file_date.AutoSize = true; + this.label_file_date.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label_file_date.Location = new System.Drawing.Point(390, 4); + this.label_file_date.Name = "label_file_date"; + this.label_file_date.Size = new System.Drawing.Size(110, 17); + this.label_file_date.TabIndex = 14; + this.label_file_date.Text = "日期:2016-09-01"; + // + // label_file_size + // + this.label_file_size.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.label_file_size.AutoSize = true; + this.label_file_size.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label_file_size.Location = new System.Drawing.Point(277, 4); + this.label_file_size.Name = "label_file_size"; + this.label_file_size.Size = new System.Drawing.Size(44, 17); + this.label_file_size.TabIndex = 13; + this.label_file_size.Text = "大小:"; + // + // label_file_mark + // + this.label_file_mark.AutoSize = true; + this.label_file_mark.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label_file_mark.Location = new System.Drawing.Point(27, 20); + this.label_file_mark.Name = "label_file_mark"; + this.label_file_mark.Size = new System.Drawing.Size(68, 17); + this.label_file_mark.TabIndex = 12; + this.label_file_mark.Text = "文件备注:"; + // + // label_file_name + // + this.label_file_name.AutoSize = true; + this.label_file_name.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label_file_name.Location = new System.Drawing.Point(27, 4); + this.label_file_name.Name = "label_file_name"; + this.label_file_name.Size = new System.Drawing.Size(68, 17); + this.label_file_name.TabIndex = 11; + this.label_file_name.Text = "文件名称:"; + // + // pictureBox_file + // + this.pictureBox_file.Image = global::ClientsLibrary.Properties.Resources.file; + this.pictureBox_file.Location = new System.Drawing.Point(4, 6); + this.pictureBox_file.Name = "pictureBox_file"; + this.pictureBox_file.Size = new System.Drawing.Size(18, 18); + this.pictureBox_file.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage; + this.pictureBox_file.TabIndex = 10; + this.pictureBox_file.TabStop = false; + // + // FileItemShow + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 17F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.Controls.Add(this.label_download_times); + this.Controls.Add(this.label_upload_name); + this.Controls.Add(this.progressBar1); + this.Controls.Add(this.linkLabel_download); + this.Controls.Add(this.linkLabel_delete); + this.Controls.Add(this.label_file_date); + this.Controls.Add(this.label_file_size); + this.Controls.Add(this.label_file_mark); + this.Controls.Add(this.label_file_name); + this.Controls.Add(this.pictureBox_file); + this.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); + this.Name = "FileItemShow"; + this.Size = new System.Drawing.Size(543, 45); + this.Load += new System.EventHandler(this.FileItemShow_Load); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox_file)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Label label_download_times; + private System.Windows.Forms.Label label_upload_name; + private System.Windows.Forms.ProgressBar progressBar1; + private System.Windows.Forms.LinkLabel linkLabel_download; + private System.Windows.Forms.LinkLabel linkLabel_delete; + private System.Windows.Forms.Label label_file_date; + private System.Windows.Forms.Label label_file_size; + private System.Windows.Forms.Label label_file_mark; + private System.Windows.Forms.Label label_file_name; + private System.Windows.Forms.PictureBox pictureBox_file; + } +} diff --git a/ClientsLibrary/FileSupport/FileItemShow.cs b/ClientsLibrary/FileSupport/FileItemShow.cs new file mode 100644 index 0000000..5d825e4 --- /dev/null +++ b/ClientsLibrary/FileSupport/FileItemShow.cs @@ -0,0 +1,201 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Data; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using System.Threading; +using System.IO; +using HslCommunication; +using HslCommunication.Enthernet; + +namespace ClientsLibrary.FileSupport +{ + /// + /// 文件显示的子控件类 + /// + public partial class FileItemShow : UserControl + { + #region Constructor + + /// + /// 生成一个文件对象的显示控件 + /// + /// 客户端类 + /// 第一大类 + /// 第二大类 + /// 第三大类 + /// 用户自定义的删除确认委托,可用于验证权限及密码 + public FileItemShow(IntegrationFileClient client, string factory, string group, string id, Func deleteCheck) + { + InitializeComponent(); + DeleteCheck = deleteCheck; + m_Factory = factory; + m_Group = group; + m_Id = id; + fileClient = client; + } + + #endregion + + #region Control Load + + private void FileItemShow_Load(object sender, EventArgs e) + { + + } + + #endregion + + #region Render File Information + + /// + /// 设置文件数据 + /// + /// 文件的信息对象 + /// 删除控件的使能委托 + /// file参数不能为空 + public void SetFile(GroupFileItem file, Func deleteEnable) + { + fileItem = file; + // 设置文件的图标 + pictureBox_file.Image = FileSupport.GetFileIcon(file.FileName); + + label_file_name.Text = "文件名称:" + file.FileName; + label_file_size.Text = "大小:" + file.GetTextFromFileSize(); + label_file_date.Text = "日期:" + file.UploadTime.ToString("yyyy-MM-dd"); + label_file_mark.Text = "文件备注:" + file.Description; + label_upload_name.Text = "上传人:" + file.Owner; + label_download_times.Text = "下载数:" + file.DownloadTimes; + + + linkLabel_delete.Enabled = deleteEnable.Invoke(); + linkLabel_download.Enabled = true; // 一般都是允许下载,如果不允许下载,在此处设置 + } + + + #endregion + + #region Delete Support + + private void linkLabel_delete_Click(object sender, EventArgs e) + { + // 删除文件 + if (DeleteCheck != null) + { + // 删除的权限检查 + if(!DeleteCheck.Invoke(fileItem)) + { + // 没有通过 + return; + } + } + + linkLabel_delete.Enabled = false; + Thread thread_delete_file = new Thread(new ThreadStart(ThreadDeleteFile)); + thread_delete_file.IsBackground = true; + thread_delete_file.Start(); + } + private void ThreadDeleteFile() + { + OperateResult result = fileClient.DeleteFile(fileItem.FileName, m_Factory, m_Group, m_Id); + if(IsHandleCreated) Invoke(new Action(() => + { + if(result.IsSuccess) + { + MessageBox.Show("删除成功!,请刷新界面。"); + } + else + { + MessageBox.Show("删除失败!错误:" + result.Message); + } + linkLabel_delete.Enabled = true; + })); + } + + #endregion + + #region Download Support + + + private void linkLabel_download_Click(object sender, EventArgs e) + { + //下载文件 + linkLabel_download.Enabled = false; + + Thread thread_down_file = new Thread(new ThreadStart(ThreadDownloadFile)); + thread_down_file.IsBackground = true; + thread_down_file.Start(); + } + + private void ThreadDownloadFile() + { + string save_file_name = Application.StartupPath + "\\download\\files"; + if (!Directory.Exists(save_file_name)) + { + Directory.CreateDirectory(save_file_name); + } + save_file_name += "\\" + fileItem.FileName; + + + OperateResult result = fileClient.DownloadFile( + fileItem.FileName, + m_Factory, + m_Group, + m_Id, + DownloadProgressReport, + save_file_name + ); + + Invoke(new Action(() => + { + if(result.IsSuccess) + { + if (MessageBox.Show("下载完成,路径为:" + save_file_name + Environment.NewLine + + "是否打开文件路径?", "打开确认", MessageBoxButtons.YesNo, + MessageBoxIcon.Information) == DialogResult.Yes) + { + System.Diagnostics.Process.Start("explorer.exe", @"/select," + save_file_name); + } + } + else + { + MessageBox.Show("下载失败,错误原因:" + result.Message); + } + if (IsHandleCreated) linkLabel_download.Enabled = true; + })); + } + + private void DownloadProgressReport(long download, long totle) + { + if(IsHandleCreated) + { + if(InvokeRequired) + { + BeginInvoke(new Action(() => + { + DownloadProgressReport(download, totle); + })); + return; + } + + progressBar1.Value = (int)(download * 100 / totle); + } + } + + #endregion + + #region Private Members + + private IntegrationFileClient fileClient; // 进行文件操作的客户端 + private Func DeleteCheck; // 删除操作时的检查方法 + private GroupFileItem fileItem; // 本控件关联显示的文件 + private string m_Factory; // 文件的第一大类 + private string m_Group; // 文件的第二大类 + private string m_Id; // 文件的第三大类 + + #endregion + } +} diff --git a/ClientsLibrary/FileSupport/FileItemShow.resx b/ClientsLibrary/FileSupport/FileItemShow.resx new file mode 100644 index 0000000..7080a7d --- /dev/null +++ b/ClientsLibrary/FileSupport/FileItemShow.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/ClientsLibrary/FileSupport/FileOperateControl.cs b/ClientsLibrary/FileSupport/FileOperateControl.cs new file mode 100644 index 0000000..0cb2a73 --- /dev/null +++ b/ClientsLibrary/FileSupport/FileOperateControl.cs @@ -0,0 +1,288 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Data; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using System.IO; +using System.Threading; +using HslCommunication.Enthernet; +using HslCommunication.BasicFramework; +using HslCommunication; + +namespace ClientsLibrary.FileSupport +{ + /// + /// 上传或下载的控件 + /// + public partial class FileOperateControl : UserControl + { + /// + /// 上传的实例化方法 + /// + /// 客户端文件传送引擎 + /// 完整的包含路径的本地文件路径 + /// 文件所属的工厂 + /// 文件所属的分类 + /// 文件所属的设备ID + public FileOperateControl(IntegrationFileClient advancedFile, string filepath, string factory, string group, string id) + { + InitializeComponent(); + Is_down_file = false; + FilePath = filepath; + Factory = factory; + Group = group; + Id = id; + AdvancedFileClient = advancedFile; + } + + /// + /// 下载的实例化方法 + /// + /// 客户端文件传送引擎 + /// 服务器的文件名称,包含后缀 + /// 文件所属的第一大类 + /// 文件所属的第二大类 + /// 文件所属的第三大类 + /// 本地保存的路径 + public FileOperateControl(IntegrationFileClient advancedFile, string fileName, string factory, string group, string id, string savepath) + { + InitializeComponent(); + //下载文件 + Is_down_file = true; + FilePath = fileName; + Factory = factory; + Group = group; + Id = id; + SavaPathDirectory = savepath; + AdvancedFileClient = advancedFile; + } + + + private void FileOperateControl_Load(object sender, EventArgs e) + { + label_filename.Text = FilePath; + label_now_info.Text = "正在确认..."; + + progressBar1.Maximum = 100; + + button1.Location = new Point(389, 55); + if(Is_down_file) + { + button1.Text = "重新下载文件"; + } + else + { + button1.Text = "重新上传文件"; + } + } + + /// + /// 指示本次上传或是下载是否结束 + /// + public bool IsOperateFinished { get; set; } = false; + + + private bool Is_down_file { get; set; } = true; + /// + /// 文件的原始路径 + /// + private string FilePath { get; set; } = ""; + /// + /// 文件所属的工厂分类 + /// + private string Factory { get; set; } = ""; + /// + /// 文件所属的类别 + /// + private string Group { get; set; } = ""; + /// + /// 文件所属的特殊ID + /// + private string Id { get; set; } = ""; + /// + /// 文件保存的路径,文件下载的时候所需的 + /// + private string SavaPathDirectory { get; set; } = ""; + + + /// + /// 开始上传文件 + /// + public void StartUploadFile() + { + try + { + label_now_info.Text = "正在确认..."; + if (File.Exists(FilePath)) + { + Thread thread = new Thread(new ThreadStart(ThreadUploadFile)); + thread.IsBackground = true; + thread.Start(); + } + else + { + label_now_info.Text = "文件不存在"; + IsOperateFinished = true; + } + } + catch + { + + } + } + + private void WrongTextShow(string text) + { + if (IsHandleCreated && InvokeRequired) + { + Invoke(new Action(() => + { + WrongTextShow(text); + })); + return; + } + + label_now_info.Text = text; + button1.Visible = true; + IsOperateFinished = true; + progressBar1.Value = 0; + } + + + IntegrationFileClient AdvancedFileClient = null; + + private void ThreadUploadFile() + { + FileInfo finfo = new FileInfo(FilePath); + + Invoke(new Action(() => + { + label_now_info.Text = "正在上传文件..."; + label_filesize.Text = SoftBasic.GetSizeDescription(finfo.Length); + progressBar1.Value = 0; + })); + + OperateResult result = AdvancedFileClient.UploadFile( + FilePath, + finfo.Name, + Factory, + Group, + Id, + "", + UserClient.UserAccount.UserName, + ReportProgress); + + if(result.IsSuccess) + { + Invoke(new Action(() => + { + label_now_info.Text = "文件上传成功"; + })); + } + else + { + WrongTextShow("异常:" + result.Message); + } + + IsOperateFinished = true; + } + + + private void button1_Click(object sender, EventArgs e) + { + IsOperateFinished = false; + button1.Visible = false; + if (Is_down_file) + { + //下载文件 + StartDownloadFile(); + } + else + { + //上传文件 + StartUploadFile(); + } + } + + + private void ReportProgress(long current,long count) + { + Invoke(new Action(() => + { + long percent = 0; + if (count > 0) + { + percent = current * 100 / count; + } + + progressBar1.Value = (int)percent; + label_now_info.Text = "已完成:" + percent.ToString() + "%"; + + label_filesize.Text = SoftBasic.GetSizeDescription(count); + })); + } + + + + /// + /// 启动下载文件 + /// + public void StartDownloadFile() + { + Thread thread = new Thread(new ThreadStart(ThreadDownloadFile)) + { + IsBackground = true + }; + thread.Start(); + } + + private void ThreadDownloadFile() + { + Invoke(new Action(() => + { + label_now_info.Text = "正在下载文件..."; + progressBar1.Value = 0; + })); + + + if (!SavaPathDirectory.EndsWith(@"\")) + { + SavaPathDirectory = SavaPathDirectory + @"\"; + } + + + + OperateResult result = AdvancedFileClient.DownloadFile( + FilePath, + Factory, + Group, + Id, + ReportProgress, + SavaPathDirectory + FilePath + ); + + if(result.IsSuccess) + { + Invoke(new Action(() => + { + label_now_info.Text = "文件下载成功"; + })); + } + else + { + WrongTextShow("异常:" + result.Message); + } + + IsOperateFinished = true; + } + + private void FileOperateControl_Paint(object sender, PaintEventArgs e) + { + // 绘制外观 + e.Graphics.DrawRectangle(Pens.DodgerBlue, new Rectangle(0, 0, Width - 1, Height - 1)); + } + } +} diff --git a/ClientsLibrary/FileSupport/FileOperateControl.designer.cs b/ClientsLibrary/FileSupport/FileOperateControl.designer.cs new file mode 100644 index 0000000..ca7de2d --- /dev/null +++ b/ClientsLibrary/FileSupport/FileOperateControl.designer.cs @@ -0,0 +1,163 @@ +namespace ClientsLibrary.FileSupport +{ + partial class FileOperateControl + { + /// + /// 必需的设计器变量。 + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 清理所有正在使用的资源。 + /// + /// 如果应释放托管资源,为 true;否则为 false。 + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region 组件设计器生成的代码 + + /// + /// 设计器支持所需的方法 - 不要修改 + /// 使用代码编辑器修改此方法的内容。 + /// + private void InitializeComponent() + { + this.label1 = new System.Windows.Forms.Label(); + this.progressBar1 = new System.Windows.Forms.ProgressBar(); + this.label_filename = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.label_now_info = new System.Windows.Forms.Label(); + this.button1 = new System.Windows.Forms.Button(); + this.label_filesize = new System.Windows.Forms.Label(); + this.label5 = new System.Windows.Forms.Label(); + this.SuspendLayout(); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label1.Location = new System.Drawing.Point(5, 3); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(68, 17); + this.label1.TabIndex = 0; + this.label1.Text = "文件名称:"; + // + // progressBar1 + // + this.progressBar1.Location = new System.Drawing.Point(62, 42); + this.progressBar1.Name = "progressBar1"; + this.progressBar1.Size = new System.Drawing.Size(433, 12); + this.progressBar1.TabIndex = 1; + // + // label_filename + // + this.label_filename.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label_filename.Location = new System.Drawing.Point(69, 3); + this.label_filename.Name = "label_filename"; + this.label_filename.Size = new System.Drawing.Size(427, 38); + this.label_filename.TabIndex = 2; + this.label_filename.Text = "文件名称文件名称文件名称文件名称文件名称文件名称文件名称文件名称文件名称文件名称文件名称"; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label2.Location = new System.Drawing.Point(5, 40); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(44, 17); + this.label2.TabIndex = 3; + this.label2.Text = "进度:"; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label3.Location = new System.Drawing.Point(5, 60); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(68, 17); + this.label3.TabIndex = 4; + this.label3.Text = "当前操作:"; + // + // label_now_info + // + this.label_now_info.AutoSize = true; + this.label_now_info.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label_now_info.Location = new System.Drawing.Point(69, 60); + this.label_now_info.Name = "label_now_info"; + this.label_now_info.Size = new System.Drawing.Size(56, 17); + this.label_now_info.TabIndex = 5; + this.label_now_info.Text = "当前操作"; + // + // button1 + // + this.button1.Location = new System.Drawing.Point(389, 55); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(107, 23); + this.button1.TabIndex = 8; + this.button1.Text = "重新上传"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Visible = false; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // label_filesize + // + this.label_filesize.AutoSize = true; + this.label_filesize.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label_filesize.Location = new System.Drawing.Point(248, 60); + this.label_filesize.Name = "label_filesize"; + this.label_filesize.Size = new System.Drawing.Size(27, 17); + this.label_filesize.TabIndex = 10; + this.label_filesize.Text = "0 B"; + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label5.Location = new System.Drawing.Point(184, 60); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(68, 17); + this.label5.TabIndex = 9; + this.label5.Text = "文件大小:"; + // + // FileOperateControl + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.Controls.Add(this.label_filesize); + this.Controls.Add(this.label5); + this.Controls.Add(this.button1); + this.Controls.Add(this.label_now_info); + this.Controls.Add(this.label3); + this.Controls.Add(this.label2); + this.Controls.Add(this.label_filename); + this.Controls.Add(this.progressBar1); + this.Controls.Add(this.label1); + this.Name = "FileOperateControl"; + this.Size = new System.Drawing.Size(505, 82); + this.Load += new System.EventHandler(this.FileOperateControl_Load); + this.Paint += new System.Windows.Forms.PaintEventHandler(this.FileOperateControl_Paint); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Label label1; + private System.Windows.Forms.ProgressBar progressBar1; + private System.Windows.Forms.Label label_filename; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.Label label_now_info; + private System.Windows.Forms.Button button1; + private System.Windows.Forms.Label label_filesize; + private System.Windows.Forms.Label label5; + } +} diff --git a/ClientsLibrary/FileSupport/FileOperateControl.resx b/ClientsLibrary/FileSupport/FileOperateControl.resx new file mode 100644 index 0000000..7080a7d --- /dev/null +++ b/ClientsLibrary/FileSupport/FileOperateControl.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/ClientsLibrary/FileSupport/FileSupport.cs b/ClientsLibrary/FileSupport/FileSupport.cs new file mode 100644 index 0000000..9a3e77e --- /dev/null +++ b/ClientsLibrary/FileSupport/FileSupport.cs @@ -0,0 +1,197 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace ClientsLibrary.FileSupport +{ + + + /****************************************************************************** + * + * 时间: 2017年9月30日 22:11:21 + * 作者: Richard.Hu + * 说明: 命名空间FileSupport中放置了一些文件操作的控件,可以用来方便的学习和 + * 操作文件上传下载。 + * + ******************************************************************************/ + + + #region File Support + + + + /// + /// 放了一些支持文件操作的静态方法 + /// + public class FileSupport + { + #region Get Render Icon + + + /// + /// 获取文件对象显示图标 + /// + /// + public static System.Drawing.Bitmap GetFileIcon(string FileName) + { + string exc = ""; + int index = FileName.LastIndexOf('.'); + if (index > 0) + { + if (index < FileName.Length) + { + exc = FileName.Substring(index + 1); + } + } + return GetFileRenderIcon(exc); + } + + /// + /// 根据文件后缀选择需要对应显示的文件图标,包含了二十多种常用文件的图标 + /// + /// 文件的扩展名 + /// 图形对象 + public static System.Drawing.Bitmap GetFileRenderIcon(string exc) + { + exc = exc.ToLower(); + if (exc.Contains("docx")) + { + return Properties.Resources.docx; + } + else if (exc.Contains("doc")) + { + return Properties.Resources.doc; + } + else if (exc.Contains("xls")) + { + return Properties.Resources.xls; + } + else if (exc.Contains("ppt")) + { + return Properties.Resources.ppt; + } + else if ( + exc.Contains("jpg") || + exc.Contains("png") || + exc.Contains("bmp") || + exc.Contains("jpeg")) + { + return Properties.Resources.image; + } + else if (exc.Contains("rar")) + { + return Properties.Resources.rar; + } + else if (exc.Contains("zip")) + { + return Properties.Resources.zip; + } + else if (exc.Contains("exe")) + { + return Properties.Resources.exe; + } + else if (exc.Contains("pdf")) + { + return Properties.Resources.pdf; + } + else if (exc.Contains("aiff")) + { + return Properties.Resources.aiff; + } + else if (exc.Contains("ai")) + { + return Properties.Resources.ai; + } + else if (exc.Contains("audio")) + { + return Properties.Resources.audio; + } + else if (exc.Contains("dll")) + { + return Properties.Resources.bin; + } + else if (exc.Contains("bin")) + { + return Properties.Resources.bin; + } + else if (exc.Contains("csv")) + { + return Properties.Resources.csv; + } + else if (exc.Contains("html")) + { + return Properties.Resources.html; + } + else if (exc.Contains("js")) + { + return Properties.Resources.js; + } + else if (exc.Contains("php")) + { + return Properties.Resources.php; + } + else if (exc.Contains("py")) + { + return Properties.Resources.py; + } + else if (exc.Contains("sql")) + { + return Properties.Resources.sql; + } + else if (exc.Contains("svg")) + { + return Properties.Resources.svg; + } + else if (exc.Contains("txt")) + { + return Properties.Resources.txt; + } + else if (exc.Contains("xml")) + { + return Properties.Resources.xml; + } + else if (exc.Contains("iso")) + { + return Properties.Resources.iso; + } + else if (exc.Contains("jar")) + { + return Properties.Resources.jar; + } + else if (exc.Contains("mp3")) + { + return Properties.Resources.mp3; + } + else if (exc.Contains("css")) + { + return Properties.Resources.css; + } + else if (exc.Contains("perl")) + { + return Properties.Resources.perl; + } + else if (exc.Contains("7z")) + { + return Properties.Resources._7z; + } + else if (exc.Contains("ttf")) + { + return Properties.Resources.ttf; + } + else if (exc.Contains("asp")) + { + return Properties.Resources.asp; + } + else + { + return Properties.Resources.file; + } + } + + #endregion + } + + + #endregion +} diff --git a/ClientsLibrary/FileSupport/FormFileOperate.Designer.cs b/ClientsLibrary/FileSupport/FormFileOperate.Designer.cs new file mode 100644 index 0000000..7d13bd3 --- /dev/null +++ b/ClientsLibrary/FileSupport/FormFileOperate.Designer.cs @@ -0,0 +1,124 @@ +namespace ClientsLibrary.FileSupport +{ + partial class FormFileOperate + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormFileOperate)); + this.panel1 = new System.Windows.Forms.Panel(); + this.label1 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.label_finish = new System.Windows.Forms.Label(); + this.pictureBox1 = new System.Windows.Forms.PictureBox(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); + this.SuspendLayout(); + // + // panel1 + // + this.panel1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left))); + this.panel1.AutoScroll = true; + this.panel1.Location = new System.Drawing.Point(3, 31); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(527, 398); + this.panel1.TabIndex = 0; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label1.Location = new System.Drawing.Point(5, 9); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(152, 17); + this.label1.TabIndex = 1; + this.label1.Text = "当前正在操作的文件数量:"; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label2.Location = new System.Drawing.Point(405, 9); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(56, 17); + this.label2.TabIndex = 2; + this.label2.Text = "已完成:"; + // + // label_finish + // + this.label_finish.AutoSize = true; + this.label_finish.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label_finish.Location = new System.Drawing.Point(466, 9); + this.label_finish.Name = "label_finish"; + this.label_finish.Size = new System.Drawing.Size(27, 17); + this.label_finish.TabIndex = 3; + this.label_finish.Text = "0/0"; + // + // pictureBox1 + // + this.pictureBox1.Location = new System.Drawing.Point(379, 5); + this.pictureBox1.Name = "pictureBox1"; + this.pictureBox1.Size = new System.Drawing.Size(25, 25); + this.pictureBox1.TabIndex = 4; + this.pictureBox1.TabStop = false; + // + // FormFileOperate + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(531, 432); + this.Controls.Add(this.pictureBox1); + this.Controls.Add(this.label_finish); + this.Controls.Add(this.label2); + this.Controls.Add(this.label1); + this.Controls.Add(this.panel1); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.MaximizeBox = false; + this.MaximumSize = new System.Drawing.Size(547, 2434); + this.MinimizeBox = false; + this.MinimumSize = new System.Drawing.Size(547, 434); + this.Name = "FormFileOperate"; + this.ShowInTaskbar = false; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "文件上传"; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.FormFileOperate_FormClosing); + this.Load += new System.EventHandler(this.FormFileUpload_Load); + this.Shown += new System.EventHandler(this.FormFileOperate_Shown); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Label label_finish; + private System.Windows.Forms.PictureBox pictureBox1; + } +} \ No newline at end of file diff --git a/ClientsLibrary/FileSupport/FormFileOperate.cs b/ClientsLibrary/FileSupport/FormFileOperate.cs new file mode 100644 index 0000000..4f39b8f --- /dev/null +++ b/ClientsLibrary/FileSupport/FormFileOperate.cs @@ -0,0 +1,204 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Windows.Forms; +using System.Threading; +using HslCommunication.Enthernet; + +namespace ClientsLibrary.FileSupport +{ + /// + /// 用于文件上传或下载的窗口 + /// + public partial class FormFileOperate : Form + { + #region Constructor + + /// + /// 实例化一个文件上传的窗口 + /// + /// 客户端的文件引擎 + /// 等待上传的文件数组 + /// 第一大类 + /// 第二大类 + /// 第三大类 + public FormFileOperate(IntegrationFileClient IntegratedFile, string[] files,string factory,string group,string id) + { + InitializeComponent(); + is_down_file = false; + FormInitialization(IntegratedFile, files, factory, group, id); + } + + /// + /// 实例化一个文件下载的窗口 + /// + /// 客户端的文件传送引擎 + /// 等待下载的文件 + /// 第一大类 + /// 第二大类 + /// 第三大类 + /// 保存路径 + public FormFileOperate(IntegrationFileClient advancedFile, string[] files, string factory, string group, string id, string savepath) + { + InitializeComponent(); + SavePath = savepath; + is_down_file = true; + FormInitialization(advancedFile, files, factory, group, id); + } + + /// + /// 初始化 + /// + private void FormInitialization(IntegrationFileClient IntegratedFile, string[] files, string factory, string group, string id) + { + Icon = UserClient.GetFormWindowIcon(); // 设置窗口ICON + Files = files; // 设置文件名队列 + Factory = factory; // 第一大类 + Group = group; // 第二大类 + Id = id; // 第三大类 + IntegrationFile = IntegratedFile; + } + + #endregion + + #region Window Load Show + + private void FormFileUpload_Load(object sender, EventArgs e) + { + // pictureBox1.Image = Properties.Resources.asset_progressBar_24x24_on; + } + + private void FormFileOperate_Shown(object sender, EventArgs e) + { + int location_y = 1; + int every_height = 85; + if (is_down_file) + { + Text = "文件下载"; + + if (Files != null) + { + for (int i = 0; i < Files.Length; i++) + { + FileOperateControl item = new FileOperateControl(IntegrationFile, Files[i], Factory, Group, Id, SavePath); + panel1.Controls.Add(item); + item.Location = new Point(3, location_y); + all_file_controls.Add(item); + location_y += every_height; + } + } + } + else + { + Text = "文件上传"; + + if (Files != null) + { + for (int i = 0; i < Files.Length; i++) + { + FileOperateControl item = new FileOperateControl(IntegrationFile, Files[i], Factory, Group, Id); + panel1.Controls.Add(item); + item.Location = new Point(3, location_y); + all_file_controls.Add(item); + location_y += every_height; + } + } + } + + + Thread thread = new Thread(new ThreadStart(ThreadCheckFinish)); + thread.IsBackground = true; + thread.Start(); + } + + + private void FormFileOperate_FormClosing(object sender, FormClosingEventArgs e) + { + for (int i = 0; i < all_file_controls.Count; i++) + { + if(!all_file_controls[i].IsOperateFinished) + { + e.Cancel = true; + MessageBox.Show("当前任务没有完成不能退出!"); + break; + } + } + } + + + #endregion + + #region Finish Check + + + private void ThreadCheckFinish() + { + Thread.Sleep(400); + + Invoke(new Action(() => + { + label1.Text += all_file_controls.Count; + label_finish.Text = "0/" + all_file_controls.Count; + + for (int i = 0; i < all_file_controls.Count; i++) + { + if (is_down_file) + { + all_file_controls[i].StartDownloadFile(); + } + else + { + all_file_controls[i].StartUploadFile(); + } + } + })); + Thread.Sleep(400); + while (true) + { + int complete = 0; + for (int i = 0; i < all_file_controls.Count; i++) + { + if (all_file_controls[i].IsOperateFinished) + { + complete++; + } + } + + try + { + // 更新显示进度 + Invoke(new Action(() => + { + label_finish.Text = complete + "/" + all_file_controls.Count; + })); + } + catch + { + + } + + if (complete >= all_file_controls.Count) + { + break; + } + Thread.Sleep(490); + } + } + + + #endregion + + #region Private Members + + private string[] Files = null; // 需要上传或是需要下载的文件列表 + private string Factory = ""; // 文件的第一大类 + private string Group = ""; // 文件的第二大类 + private string Id = ""; // 文件的第三大类 + private string SavePath = ""; // 用于文件下载时候的保存位置 + private IntegrationFileClient IntegrationFile = null; // 文件客户端 + private bool is_down_file = true; // 指示上传文件还是下载文件 + private List all_file_controls = new List(); + + #endregion + } +} diff --git a/ClientsLibrary/FileSupport/FormFileOperate.resx b/ClientsLibrary/FileSupport/FormFileOperate.resx new file mode 100644 index 0000000..a8166cc --- /dev/null +++ b/ClientsLibrary/FileSupport/FormFileOperate.resx @@ -0,0 +1,294 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + AAABAAYAICAQAAEABADoAgAAZgAAABAQEAABAAQAKAEAAE4DAAAgIAAAAQAIAKgIAAB2BAAAEBAAAAEA + CABoBQAAHg0AACAgAAABACAAqBAAAIYSAAAQEAAAAQAgAGgEAAAuIwAAKAAAACAAAABAAAAAAQAEAAAA + AAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAIAAAACAgACAAAAAgACAAICAAACAgIAAwMDAAAAA + /wAA/wAAAP//AP8AAAD/AP8A//8AAP///wAAAAAAAAAAAAAAAAAAAAAA///////////////////wAP// + ////////////////8AD/d3d3f/d3d3f/d3d3f/AA/3d3d3/3d3d3/3d3d3/wAP93d3d/93d3d/93d3d/ + 8AD/d3d3f/d3d3f/d3d3f/AA/3d3d3/3d3d3/3d3d3/wAP93d3d/93d3d/93d3d/8AD/d3d3f/d3d3f/ + d3d3f/AA///////////////////wAP//////////////////8AD/d3d3f/d3d3f/AAAAAAAA/3d3d3/3 + d3d3/wAAAAAAAP93d3d/93d3d/8AAAAAAAD/d3d3f/d3d3f/AA/wAAAA/3d3d3/3d3d3/wD//wAAAP93 + d3d/93d3d/8P///wAAD/d3d3f/d3d3f///d//wAA//////////////93d//wAP/////////////3d3d/ + /wD/d3d3f/AAAA//d3d3d//w/3d3d3/wAAD/93d3d3d///93d3d/8AAA//d3d3d3f///d3d3f/AAAA// + d3d3d//w/3d3d3/wAAAA//d3d3//AP93d3d/8AAAAA//d3f/8AD/d3d3f/AAAAAA//d//wAA/4iIiI/w + AAAAAA////AAAP//////8AAAAAAA//8AAAAAAAAAAAAAAAAAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAP// + //8AAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAD/8AAA//AAAP/wAA + Dn8AAAw/AAAIHwAAAA8AAAAHAAAAAwAfgAEAHwAAAB8AAAAfgAEAH8ADAB/gBwAf8A8AH/gfAB/8P/// + /n//////KAAAABAAAAAgAAAAAQAEAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAIAAAACA + gACAAAAAgACAAICAAACAgIAAwMDAAAAA/wAA/wAAAP//AP8AAAD/AP8A//8AAP///wAAAAAAAAAAAAAA + AAAAAAAAD////////wAPd393f3d/AA93f3d/d38AD3d/d393fwAP////////AA93f3d/AAAAD3d/d38A + 8AAPd393fw9/AA//////93fwD3d/AA93d38Pd38AAPd38A93fwAAD38AD///AAAA8AAAAAAAAAAAAP// + AAD//wAAgAMAAIADAACAAwAAgAMAAIADAACAPwAAgDcAAIAjAACAAQAAg4AAAIPBAACD4wAAg/cAAP// + AAAoAAAAIAAAAEAAAAABAAgAAAAAAAAEAAAAAAAAAAAAAAABAAAAAQAAAAAAAEJCQgCGhoYAycnJAPb2 + 9gD5+fkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEBAQEBAQEBAQE + BAQEBAQEBAQEBAQEBAQEBAQEBAAAAAQEAQEBAQEBAQQEAQEBAQEBAQQEAQEBAQEBAQQEAAAABAQBAQEB + AQEBBAQBAQEBAQEBBAQBAQEBAQEBBAQAAAAEBAEBAQEBAQEEBAEBAQEBAQEEBAEBAQEBAQEEBAAAAAQE + AQEBAQEBAQQEAQEBAQEBAQQEAQEBAQEBAQQEAAAABAQBAQEBAQEBBAQBAQEBAQEBBAQBAQEBAQEBBAQA + AAAEBAEBAQEBAQEEBAEBAQEBAQEEBAEBAQEBAQEEBAAAAAQEAQEBAQEBAQQEAQEBAQEBAQQEAQEBAQEB + AQQEAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQE + BAQEBAQEBAAAAAQEAQEBAQEBAQQEAQEBAQEBAQQEAAAAAAAAAAAAAAAABAQBAQEBAQEBBAQBAQEBAQEB + BAQAAAAAAAAAAAAAAAAEBAEBAQEBAQEEBAEBAQEBAQEEBAAAAAAAAAAAAAAAAAQEAQEBAQEBAQQEAQEB + AQEBAQQEAAAABQUAAAAAAAAABAQBAQEBAQEBBAQBAQEBAQEBBAQAAAUEBAUAAAAAAAAEBAEBAQEBAQEE + BAEBAQEBAQEEBAAFBAQEBAUAAAAAAAQEAQEBAQEBAQQEAQEBAQEBAQQEBQQEAgIEBAUAAAAABAQEBAQE + BAQEBAQEBAQEBAQEBAQEBAIBAQIEBAUAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQCAQEBAQIEBAUAAAQE + AQEBAQEBAQQEAAAAAAAABQQEAgEBAQEBAQIEBAUABAQBAQEBAQEBBAQAAAAAAAUEBAIBAQEBAQEBAQIE + BAUEBAEBAQEBAQEEBAAAAAAABQQEAgEBAQEBAQEBAgQEBQQEAQEBAQEBAQQEAAAAAAAABQQEAgEBAQEB + AQIEBAUABAQBAQEBAQEBBAQAAAAAAAAABQQEAgEBAQECBAQFAAAEBAEBAQEBAQEEBAAAAAAAAAAABQQE + AgEBAgQEBQAAAAQEAQEBAQEBAQQEAAAAAAAAAAAABQQEAgIEBAUAAAAABAQDAwMDAwMDBAQAAAAAAAAA + AAAABQQEBAQFAAAAAAAEBAQEBAQEBAQEBAAAAAAAAAAAAAAABQQEBQAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAABQUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////AAAABwAA + AAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAA//AAAP/wAAD/8AAA5/AAAMPwAA + CB8AAAAPAAAABwAAAAMAH4ABAB8AAAAfAAAAH4ABAB/AAwAf4AcAH/APAB/4HwAf/D////5//////ygA + AAAQAAAAIAAAAAEACAAAAAAAAAEAAAAAAAAAAAAAAAEAAAABAAAAAAAAQkJCAGRkZACGhoYA6+vrAPb2 + 9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8AAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAABQUFBQUFBQUFBQUFBQAAAAUBAQEFAQEBBQEBAQUAAAAFAQEBBQEBAQUBAQEF + AAAABQEBAQUBAQEFAQEBBQAAAAUFBQUFBQUFBQUFBQUAAAAFAQEBBQEBAQUAAAAAAAAABQEBAQUBAQEF + AAAFAAAAAAUBAQEFAQEBBQAEAwQAAAAFBQUFBQUFBQUEAgECBAAABQEBAQUAAAAFAwEBAQMFAAUBAQEF + AAAAAAQCAQIEAAAFAQEBBQAAAAAABAMEAAAABQUFBQUAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAP// + AAD//wAAgAMAAIADAACAAwAAgAMAAIADAACAPwAAgDcAAIAjAACAAQAAg4AAAIPBAACD4wAAg/cAAP// + AAAoAAAAIAAAAEAAAAABACAAAAAAAIAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2/wAAAAAAAAAAAAAAAPb2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/AAAAAAAA + AAAAAAAA9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/9vb2//b29v9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/9vb2//b2 + 9v8AAAAAAAAAAAAAAAD29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv/29vb/9vb2/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv/29vb/9vb2/wAAAAAAAAAAAAAAAPb29v/29vb/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC//b2 + 9v/29vb/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC//b29v/29vb/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC//b29v/29vb/AAAAAAAAAAAAAAAA9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/9vb2//b29v9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/9vb2//b29v8AAAAAAAAAAAAAAAD29vb/9vb2/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv/29vb/9vb2/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv/29vb/9vb2/wAAAAAAAAAAAAAAAPb29v/29vb/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC//b29v/29vb/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC//b2 + 9v/29vb/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC//b29v/29vb/AAAAAAAAAAAAAAAA9vb2//b2 + 9v9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/9vb2//b29v8AAAAAAAAAAAAA + AAD29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2/wAA + AAAAAAAAAAAAAPb29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/AAAAAAAAAAAAAAAA9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/9vb2//b2 + 9v9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/9vb2//b29v8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv/29vb/9vb2/wAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC//b29v/29vb/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC//b29v/29vb/AAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/9vb2//b2 + 9v8AAAAAAAAAAAAAAAD29vaf9vb2nwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vb/9vb2/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv/29vb/9vb2/wAAAAAAAAAA9vb2n/b29v/29vb/9vb2nwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9v/29vb/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC//b29v/29vb/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC//b29v/29vb/AAAAAPb29p/29vb/9vb2//b29v/29vb/9vb2nwAAAAAAAAAAAAAAAAAA + AAAAAAAA9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/9vb2//b29v9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/9vb2//b29v/29vaf9vb2//b29v+Ghob/hoaG//b29v/29vb/9vb2nwAA + AAAAAAAAAAAAAAAAAAD29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/hoaG/0JCQv9CQkL/hoaG//b2 + 9v/29vb/9vb2nwAAAAAAAAAAAAAAAPb29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2/4aGhv9CQkL/QkJC/0JC + Qv9CQkL/hoaG//b29v/29vb/9vb2nwAAAAAAAAAA9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/9vb2//b29v8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vaf9vb2//b29v+Ghob/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/hoaG//b29v/29vb/9vb2nwAAAAD29vb/9vb2/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv/29vb/9vb2/wAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2n/b29v/29vb/hoaG/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/hoaG//b29v/29vb/9vb2n/b29v/29vb/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC//b29v/29vb/AAAAAAAAAAAAAAAAAAAAAAAAAAD29vaf9vb2//b2 + 9v+Ghob/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv+Ghob/9vb2//b29v/29vaf9vb2//b2 + 9v9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/9vb2//b29v8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAD29vaf9vb2//b29v+Ghob/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/hoaG//b29v/29vb/9vb2nwAA + AAD29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv/29vb/9vb2/wAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD29vaf9vb2//b29v+Ghob/QkJC/0JCQv9CQkL/QkJC/4aGhv/29vb/9vb2//b2 + 9p8AAAAAAAAAAPb29v/29vb/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC//b29v/29vb/AAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vaf9vb2//b29v+Ghob/QkJC/0JCQv+Ghob/9vb2//b2 + 9v/29vafAAAAAAAAAAAAAAAA9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/9vb2//b2 + 9v8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vaf9vb2//b29v+Ghob/hoaG//b2 + 9v/29vb/9vb2nwAAAAAAAAAAAAAAAAAAAAD29vb/9vb2/8nJyf/Jycn/ycnJ/8nJyf/Jycn/ycnJ/8nJ + yf/29vb/9vb2/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vaf9vb2//b2 + 9v/29vb/9vb2//b29p8AAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAD29vaf9vb2//b29v/29vafAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2QPb29kD29vZA9vb2QPb2 + 9kD29vZA9vb2QPb29kD29vZA9vb2QPb29kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD29vaf9vb2nwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP// + //8AAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAD/8AAA//AAAP/wAA + Dn8AAAw/AAAIHwAAAA8AAAAHAAAAAwAfgAEAHwAAAB8AAAAfgAEAH8ADAB/gBwAf8A8AH/gfAB/8PwAf + /n//////KAAAABAAAAAgAAAAAQAgAAAAAABABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v8AAAAAAAAAAAAA + AAD29vb/QkJC/0JCQv9CQkL/9vb2/0JCQv9CQkL/QkJC//b29v9CQkL/QkJC/0JCQv/29vb/AAAAAAAA + AAAAAAAA9vb2/0JCQv9CQkL/QkJC//b29v9CQkL/QkJC/0JCQv/29vb/QkJC/0JCQv9CQkL/9vb2/wAA + AAAAAAAAAAAAAPb29v9CQkL/QkJC/0JCQv/29vb/QkJC/0JCQv9CQkL/9vb2/0JCQv9CQkL/QkJC//b2 + 9v8AAAAAAAAAAAAAAAD29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/AAAAAAAAAAAAAAAA9vb2/0JCQv9CQkL/QkJC//b29v9CQkL/QkJC/0JCQv/29vb/AAAAAAAA + AAD29vYgAAAAAAAAAAAAAAAAAAAAAPb29v9CQkL/QkJC/0JCQv/29vb/QkJC/0JCQv9CQkL/9vb2/wAA + AAD29vZg9vb2//b29mAAAAAAAAAAAAAAAAD29vb/QkJC/0JCQv9CQkL/9vb2/0JCQv9CQkL/QkJC//b2 + 9v/29vZg6+vr/4aGhv/r6+v/9vb2YAAAAAAAAAAA9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/6+vr/2RkZP9CQkL/ZGRk/+vr6//29vZgAAAAAPb29v9CQkL/QkJC/0JCQv/29vb/AAAAAAAA + AAD29vYg9vb2/4aGhv9CQkL/QkJC/0JCQv+Ghob/9vb27wAAAAD29vb/QkJC/0JCQv9CQkL/9vb2/wAA + AAAAAAAAAAAAAPb29mDr6+v/ZGRk/0JCQv9kZGT/6urq7/b29jAAAAAA9vb2/0JCQv9CQkL/QkJC//b2 + 9v8AAAAAAAAAAAAAAAAAAAAA9vb2YOvr6/+Ghob/6urq7/b29jAAAAAAAAAAAPb29v/29vb/9vb2//b2 + 9v/29vb/AAAAAAAAAAAAAAAAAAAAAAAAAAD29vZg9vb27/b29jAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAA//8AAIAD + AACAAwAAgAMAAIADAACAAwAAgDcAAIAjAACAAQAAgAAAAIMAAACDgAAAg8EAAIPjAAD//wAA + + + \ No newline at end of file diff --git a/ClientsLibrary/FileSupport/FormSimplyFileUpload.cs b/ClientsLibrary/FileSupport/FormSimplyFileUpload.cs new file mode 100644 index 0000000..5a8aa5c --- /dev/null +++ b/ClientsLibrary/FileSupport/FormSimplyFileUpload.cs @@ -0,0 +1,192 @@ +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; +using System.IO; +using System.Threading; +using HslCommunication.Enthernet; +using HslCommunication; + +namespace ClientsLibrary.FileSupport +{ + /// + /// 用于文件上传的类 + /// + public partial class FormSimplyFileUpload : Form + { + #region Constructor + + /// + /// 实例化一个文件上传的窗口 + /// + /// 第一大类 + /// 第二大类 + /// 第三大类 + public FormSimplyFileUpload(string factory, string group, string id) + { + InitializeComponent(); + + Icon = UserClient.GetFormWindowIcon(); + fileItem = new GroupFileItem(); + fileClient = UserClient.Net_File_Client; + Factory = factory; + Group = group; + Id = id; + } + + #endregion + + #region Close Check + + private void FormUploadFile_FormClosing(object sender, FormClosingEventArgs e) + { + if (!userButton1.Enabled) + { + MessageBox.Show("请等待上传完成才能关闭窗口。"); + e.Cancel = true; + } + } + + #endregion + + #region Window Load Show + + private void FormSimplyFileUpload_Load(object sender, EventArgs e) + { + + } + + #endregion + + #region Upload Support + + /// + /// 用于报告进度的方法 + /// + /// + /// + private void ReportProgress(long current, long count) + { + if (InvokeRequired) + { + BeginInvoke(new Action(() => + { + ReportProgress(current, count); + })); + return; + } + + long percent = 0; + if (count > 0) + { + percent = current * 100 / count; + } + + progressBar1.Value = (int)percent; + toolStripStatusLabel2.Text = "正在上传文件(" + percent.ToString() + "%)"; + } + + /// + /// 上传文件的后台线程 + /// + private void ThreadUploadFile() + { + toolStripStatusLabel2.Text = "正在上传文件..."; + + Thread.Sleep(500); + OperateResult result = fileClient.UploadFile( + file_full_name, // 本地文件的完整路径 + fileItem.FileName, // 在服务器端需要保存的文件名,此处和本地文件名一致 + Factory, // 文件的第一大类 + Group, // 文件的第二大类 + Id, // 文件的第三大类 + fileItem.Description, // 文件的额外描述 + UserClient.UserAccount.UserName, // 文件的上传人 + ReportProgress // 文件的进度报告 + ); + + if (result.IsSuccess) + { + Invoke(new Action(() => + { + userButton1.Enabled = true; + toolStripStatusLabel2.Text = "文件发送完成。"; + })); + } + else + { + Invoke(new Action(() => + { + MessageBox.Show("文件发送失败:" + result.Message); + userButton1.Enabled = true; + toolStripStatusLabel2.Text = "文件发送失败"; + })); + } + + } + + #endregion + + #region File Selected + + /// + /// 选择需要上传的文件 + /// + /// + /// + private void userButton2_Click(object sender, EventArgs e) + { + using (OpenFileDialog ofd = new OpenFileDialog()) + { + ofd.Multiselect = false; + if (ofd.ShowDialog() == DialogResult.OK) + { + file_full_name = ofd.FileName; + textBox1.Text = file_full_name; + + FileInfo info = new FileInfo(file_full_name); + fileItem.FileName = info.Name; + fileItem.FileSize = info.Length; + label4.Text = fileItem.GetTextFromFileSize(); + } + } + } + + #endregion + + #region Start Upload + + private void userButton1_Click(object sender, EventArgs e) + { + //上传 + if (textBox1.Text != "") + { + fileItem.Description = textBox2.Text; + userButton1.Enabled = false; + progressBar1.Value = 0; + + Thread thread_upload_file = new Thread(new ThreadStart(ThreadUploadFile)); + thread_upload_file.IsBackground = true; + thread_upload_file.Start(); + } + } + + #endregion + + #region Private Members + + private IntegrationFileClient fileClient; // 数据传送对象 + private string file_full_name = ""; // 文件的完整名称 + private GroupFileItem fileItem; // 文件对象 + private string Factory = ""; // 文件的第一大类 + private string Group = ""; // 文件的第二大类 + private string Id = ""; // 文件的第三大类 + + #endregion + } + +} diff --git a/ClientsLibrary/FileSupport/FormSimplyFileUpload.designer.cs b/ClientsLibrary/FileSupport/FormSimplyFileUpload.designer.cs new file mode 100644 index 0000000..79cfd9a --- /dev/null +++ b/ClientsLibrary/FileSupport/FormSimplyFileUpload.designer.cs @@ -0,0 +1,233 @@ +namespace ClientsLibrary.FileSupport +{ + partial class FormSimplyFileUpload + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormSimplyFileUpload)); + this.label6 = new System.Windows.Forms.Label(); + this.statusStrip1 = new System.Windows.Forms.StatusStrip(); + this.toolStripStatusLabel1 = new System.Windows.Forms.ToolStripStatusLabel(); + this.toolStripStatusLabel2 = new System.Windows.Forms.ToolStripStatusLabel(); + this.label5 = new System.Windows.Forms.Label(); + this.label4 = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.progressBar1 = new System.Windows.Forms.ProgressBar(); + this.textBox2 = new System.Windows.Forms.TextBox(); + this.label2 = new System.Windows.Forms.Label(); + this.textBox1 = new System.Windows.Forms.TextBox(); + this.label1 = new System.Windows.Forms.Label(); + this.userButton1 = new HslCommunication.Controls.UserButton(); + this.userButton2 = new HslCommunication.Controls.UserButton(); + this.statusStrip1.SuspendLayout(); + this.SuspendLayout(); + // + // label6 + // + this.label6.AutoSize = true; + this.label6.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label6.ForeColor = System.Drawing.Color.Red; + this.label6.Location = new System.Drawing.Point(20, 7); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(535, 16); + this.label6.TabIndex = 23; + this.label6.Text = "注意:如果服务器存在同名文件,将会被覆盖,上传之前请谨慎确认!"; + // + // statusStrip1 + // + this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.toolStripStatusLabel1, + this.toolStripStatusLabel2}); + this.statusStrip1.Location = new System.Drawing.Point(0, 309); + this.statusStrip1.Name = "statusStrip1"; + this.statusStrip1.Size = new System.Drawing.Size(563, 22); + this.statusStrip1.TabIndex = 22; + this.statusStrip1.Text = "statusStrip1"; + // + // toolStripStatusLabel1 + // + this.toolStripStatusLabel1.Name = "toolStripStatusLabel1"; + this.toolStripStatusLabel1.Size = new System.Drawing.Size(68, 17); + this.toolStripStatusLabel1.Text = "状态说明:"; + // + // toolStripStatusLabel2 + // + this.toolStripStatusLabel2.Name = "toolStripStatusLabel2"; + this.toolStripStatusLabel2.Size = new System.Drawing.Size(23, 17); + this.toolStripStatusLabel2.Text = "---"; + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label5.Location = new System.Drawing.Point(29, 218); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(88, 16); + this.label5.TabIndex = 20; + this.label5.Text = "4.上传进度"; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label4.Location = new System.Drawing.Point(132, 76); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(24, 16); + this.label4.TabIndex = 19; + this.label4.Text = "0B"; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label3.Location = new System.Drawing.Point(29, 76); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(88, 16); + this.label3.TabIndex = 18; + this.label3.Text = "2.文件大小"; + // + // progressBar1 + // + this.progressBar1.Location = new System.Drawing.Point(47, 244); + this.progressBar1.Name = "progressBar1"; + this.progressBar1.Size = new System.Drawing.Size(449, 19); + this.progressBar1.TabIndex = 17; + // + // textBox2 + // + this.textBox2.Location = new System.Drawing.Point(47, 127); + this.textBox2.Multiline = true; + this.textBox2.Name = "textBox2"; + this.textBox2.Size = new System.Drawing.Size(449, 74); + this.textBox2.TabIndex = 16; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label2.Location = new System.Drawing.Point(29, 103); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(168, 16); + this.label2.TabIndex = 15; + this.label2.Text = "3.文件说明(最多50字)"; + // + // textBox1 + // + this.textBox1.Location = new System.Drawing.Point(47, 52); + this.textBox1.Name = "textBox1"; + this.textBox1.ReadOnly = true; + this.textBox1.Size = new System.Drawing.Size(449, 21); + this.textBox1.TabIndex = 13; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label1.Location = new System.Drawing.Point(29, 33); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(88, 16); + this.label1.TabIndex = 12; + this.label1.Text = "1.文件选择"; + // + // userButton1 + // + this.userButton1.BackColor = System.Drawing.Color.Transparent; + this.userButton1.CustomerInformation = ""; + this.userButton1.EnableColor = System.Drawing.Color.FromArgb(((int)(((byte)(190)))), ((int)(((byte)(190)))), ((int)(((byte)(190))))); + this.userButton1.Font = new System.Drawing.Font("微软雅黑", 9F); + this.userButton1.Location = new System.Drawing.Point(214, 267); + this.userButton1.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); + this.userButton1.Name = "userButton1"; + this.userButton1.Size = new System.Drawing.Size(129, 35); + this.userButton1.TabIndex = 24; + this.userButton1.UIText = "上传"; + this.userButton1.Click += new System.EventHandler(this.userButton1_Click); + // + // userButton2 + // + this.userButton2.BackColor = System.Drawing.Color.Transparent; + this.userButton2.CustomerInformation = ""; + this.userButton2.EnableColor = System.Drawing.Color.FromArgb(((int)(((byte)(190)))), ((int)(((byte)(190)))), ((int)(((byte)(190))))); + this.userButton2.Font = new System.Drawing.Font("微软雅黑", 9F); + this.userButton2.Location = new System.Drawing.Point(506, 50); + this.userButton2.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); + this.userButton2.Name = "userButton2"; + this.userButton2.Size = new System.Drawing.Size(49, 25); + this.userButton2.TabIndex = 25; + this.userButton2.UIText = "选择"; + this.userButton2.Click += new System.EventHandler(this.userButton2_Click); + // + // FormSimplyFileUpload + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(563, 331); + this.Controls.Add(this.userButton2); + this.Controls.Add(this.userButton1); + this.Controls.Add(this.label6); + this.Controls.Add(this.statusStrip1); + this.Controls.Add(this.label5); + this.Controls.Add(this.label4); + this.Controls.Add(this.label3); + this.Controls.Add(this.progressBar1); + this.Controls.Add(this.textBox2); + this.Controls.Add(this.label2); + this.Controls.Add(this.textBox1); + this.Controls.Add(this.label1); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.MaximumSize = new System.Drawing.Size(579, 370); + this.MinimumSize = new System.Drawing.Size(579, 370); + this.Name = "FormSimplyFileUpload"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "上传文件至服务器 [ 取消请直接关闭窗口 ]"; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.FormUploadFile_FormClosing); + this.Load += new System.EventHandler(this.FormSimplyFileUpload_Load); + this.statusStrip1.ResumeLayout(false); + this.statusStrip1.PerformLayout(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Label label6; + private System.Windows.Forms.StatusStrip statusStrip1; + private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel1; + private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel2; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.ProgressBar progressBar1; + private System.Windows.Forms.TextBox textBox2; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.TextBox textBox1; + private System.Windows.Forms.Label label1; + private HslCommunication.Controls.UserButton userButton1; + private HslCommunication.Controls.UserButton userButton2; + } +} \ No newline at end of file diff --git a/ClientsLibrary/FileSupport/FormSimplyFileUpload.resx b/ClientsLibrary/FileSupport/FormSimplyFileUpload.resx new file mode 100644 index 0000000..1dcebaa --- /dev/null +++ b/ClientsLibrary/FileSupport/FormSimplyFileUpload.resx @@ -0,0 +1,297 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + + + + AAABAAYAICAQAAEABADoAgAAZgAAABAQEAABAAQAKAEAAE4DAAAgIAAAAQAIAKgIAAB2BAAAEBAAAAEA + CABoBQAAHg0AACAgAAABACAAqBAAAIYSAAAQEAAAAQAgAGgEAAAuIwAAKAAAACAAAABAAAAAAQAEAAAA + AAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAIAAAACAgACAAAAAgACAAICAAACAgIAAwMDAAAAA + /wAA/wAAAP//AP8AAAD/AP8A//8AAP///wAAAAAAAAAAAAAAAAAAAAAA///////////////////wAP// + ////////////////8AD/d3d3f/d3d3f/d3d3f/AA/3d3d3/3d3d3/3d3d3/wAP93d3d/93d3d/93d3d/ + 8AD/d3d3f/d3d3f/d3d3f/AA/3d3d3/3d3d3/3d3d3/wAP93d3d/93d3d/93d3d/8AD/d3d3f/d3d3f/ + d3d3f/AA///////////////////wAP//////////////////8AD/d3d3f/d3d3f/AAAAAAAA/3d3d3/3 + d3d3/wAAAAAAAP93d3d/93d3d/8AAAAAAAD/d3d3f/d3d3f/AA/wAAAA/3d3d3/3d3d3/wD//wAAAP93 + d3d/93d3d/8P///wAAD/d3d3f/d3d3f///d//wAA//////////////93d//wAP/////////////3d3d/ + /wD/d3d3f/AAAA//d3d3d//w/3d3d3/wAAD/93d3d3d///93d3d/8AAA//d3d3d3f///d3d3f/AAAA// + d3d3d//w/3d3d3/wAAAA//d3d3//AP93d3d/8AAAAA//d3f/8AD/d3d3f/AAAAAA//d//wAA/4iIiI/w + AAAAAA////AAAP//////8AAAAAAA//8AAAAAAAAAAAAAAAAAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAP// + //8AAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAD/8AAA//AAAP/wAA + Dn8AAAw/AAAIHwAAAA8AAAAHAAAAAwAfgAEAHwAAAB8AAAAfgAEAH8ADAB/gBwAf8A8AH/gfAB/8P/// + /n//////KAAAABAAAAAgAAAAAQAEAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAIAAAACA + gACAAAAAgACAAICAAACAgIAAwMDAAAAA/wAA/wAAAP//AP8AAAD/AP8A//8AAP///wAAAAAAAAAAAAAA + AAAAAAAAD////////wAPd393f3d/AA93f3d/d38AD3d/d393fwAP////////AA93f3d/AAAAD3d/d38A + 8AAPd393fw9/AA//////93fwD3d/AA93d38Pd38AAPd38A93fwAAD38AD///AAAA8AAAAAAAAAAAAP// + AAD//wAAgAMAAIADAACAAwAAgAMAAIADAACAPwAAgDcAAIAjAACAAQAAg4AAAIPBAACD4wAAg/cAAP// + AAAoAAAAIAAAAEAAAAABAAgAAAAAAAAEAAAAAAAAAAAAAAABAAAAAQAAAAAAAEJCQgCGhoYAycnJAPb2 + 9gD5+fkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEBAQEBAQEBAQE + BAQEBAQEBAQEBAQEBAQEBAQEBAAAAAQEAQEBAQEBAQQEAQEBAQEBAQQEAQEBAQEBAQQEAAAABAQBAQEB + AQEBBAQBAQEBAQEBBAQBAQEBAQEBBAQAAAAEBAEBAQEBAQEEBAEBAQEBAQEEBAEBAQEBAQEEBAAAAAQE + AQEBAQEBAQQEAQEBAQEBAQQEAQEBAQEBAQQEAAAABAQBAQEBAQEBBAQBAQEBAQEBBAQBAQEBAQEBBAQA + AAAEBAEBAQEBAQEEBAEBAQEBAQEEBAEBAQEBAQEEBAAAAAQEAQEBAQEBAQQEAQEBAQEBAQQEAQEBAQEB + AQQEAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQE + BAQEBAQEBAAAAAQEAQEBAQEBAQQEAQEBAQEBAQQEAAAAAAAAAAAAAAAABAQBAQEBAQEBBAQBAQEBAQEB + BAQAAAAAAAAAAAAAAAAEBAEBAQEBAQEEBAEBAQEBAQEEBAAAAAAAAAAAAAAAAAQEAQEBAQEBAQQEAQEB + AQEBAQQEAAAABQUAAAAAAAAABAQBAQEBAQEBBAQBAQEBAQEBBAQAAAUEBAUAAAAAAAAEBAEBAQEBAQEE + BAEBAQEBAQEEBAAFBAQEBAUAAAAAAAQEAQEBAQEBAQQEAQEBAQEBAQQEBQQEAgIEBAUAAAAABAQEBAQE + BAQEBAQEBAQEBAQEBAQEBAIBAQIEBAUAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQCAQEBAQIEBAUAAAQE + AQEBAQEBAQQEAAAAAAAABQQEAgEBAQEBAQIEBAUABAQBAQEBAQEBBAQAAAAAAAUEBAIBAQEBAQEBAQIE + BAUEBAEBAQEBAQEEBAAAAAAABQQEAgEBAQEBAQEBAgQEBQQEAQEBAQEBAQQEAAAAAAAABQQEAgEBAQEB + AQIEBAUABAQBAQEBAQEBBAQAAAAAAAAABQQEAgEBAQECBAQFAAAEBAEBAQEBAQEEBAAAAAAAAAAABQQE + AgEBAgQEBQAAAAQEAQEBAQEBAQQEAAAAAAAAAAAABQQEAgIEBAUAAAAABAQDAwMDAwMDBAQAAAAAAAAA + AAAABQQEBAQFAAAAAAAEBAQEBAQEBAQEBAAAAAAAAAAAAAAABQQEBQAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAABQUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////AAAABwAA + AAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAA//AAAP/wAAD/8AAA5/AAAMPwAA + CB8AAAAPAAAABwAAAAMAH4ABAB8AAAAfAAAAH4ABAB/AAwAf4AcAH/APAB/4HwAf/D////5//////ygA + AAAQAAAAIAAAAAEACAAAAAAAAAEAAAAAAAAAAAAAAAEAAAABAAAAAAAAQkJCAGRkZACGhoYA6+vrAPb2 + 9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8AAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAABQUFBQUFBQUFBQUFBQAAAAUBAQEFAQEBBQEBAQUAAAAFAQEBBQEBAQUBAQEF + AAAABQEBAQUBAQEFAQEBBQAAAAUFBQUFBQUFBQUFBQUAAAAFAQEBBQEBAQUAAAAAAAAABQEBAQUBAQEF + AAAFAAAAAAUBAQEFAQEBBQAEAwQAAAAFBQUFBQUFBQUEAgECBAAABQEBAQUAAAAFAwEBAQMFAAUBAQEF + AAAAAAQCAQIEAAAFAQEBBQAAAAAABAMEAAAABQUFBQUAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAP// + AAD//wAAgAMAAIADAACAAwAAgAMAAIADAACAPwAAgDcAAIAjAACAAQAAg4AAAIPBAACD4wAAg/cAAP// + AAAoAAAAIAAAAEAAAAABACAAAAAAAIAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2/wAAAAAAAAAAAAAAAPb2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/AAAAAAAA + AAAAAAAA9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/9vb2//b29v9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/9vb2//b2 + 9v8AAAAAAAAAAAAAAAD29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv/29vb/9vb2/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv/29vb/9vb2/wAAAAAAAAAAAAAAAPb29v/29vb/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC//b2 + 9v/29vb/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC//b29v/29vb/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC//b29v/29vb/AAAAAAAAAAAAAAAA9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/9vb2//b29v9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/9vb2//b29v8AAAAAAAAAAAAAAAD29vb/9vb2/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv/29vb/9vb2/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv/29vb/9vb2/wAAAAAAAAAAAAAAAPb29v/29vb/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC//b29v/29vb/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC//b2 + 9v/29vb/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC//b29v/29vb/AAAAAAAAAAAAAAAA9vb2//b2 + 9v9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/9vb2//b29v8AAAAAAAAAAAAA + AAD29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2/wAA + AAAAAAAAAAAAAPb29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/AAAAAAAAAAAAAAAA9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/9vb2//b2 + 9v9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/9vb2//b29v8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv/29vb/9vb2/wAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC//b29v/29vb/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC//b29v/29vb/AAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/9vb2//b2 + 9v8AAAAAAAAAAAAAAAD29vaf9vb2nwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vb/9vb2/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv/29vb/9vb2/wAAAAAAAAAA9vb2n/b29v/29vb/9vb2nwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9v/29vb/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC//b29v/29vb/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC//b29v/29vb/AAAAAPb29p/29vb/9vb2//b29v/29vb/9vb2nwAAAAAAAAAAAAAAAAAA + AAAAAAAA9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/9vb2//b29v9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/9vb2//b29v/29vaf9vb2//b29v+Ghob/hoaG//b29v/29vb/9vb2nwAA + AAAAAAAAAAAAAAAAAAD29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/hoaG/0JCQv9CQkL/hoaG//b2 + 9v/29vb/9vb2nwAAAAAAAAAAAAAAAPb29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2/4aGhv9CQkL/QkJC/0JC + Qv9CQkL/hoaG//b29v/29vb/9vb2nwAAAAAAAAAA9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/9vb2//b29v8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vaf9vb2//b29v+Ghob/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/hoaG//b29v/29vb/9vb2nwAAAAD29vb/9vb2/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv/29vb/9vb2/wAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2n/b29v/29vb/hoaG/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/hoaG//b29v/29vb/9vb2n/b29v/29vb/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC//b29v/29vb/AAAAAAAAAAAAAAAAAAAAAAAAAAD29vaf9vb2//b2 + 9v+Ghob/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv+Ghob/9vb2//b29v/29vaf9vb2//b2 + 9v9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/9vb2//b29v8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAD29vaf9vb2//b29v+Ghob/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/hoaG//b29v/29vb/9vb2nwAA + AAD29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv/29vb/9vb2/wAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD29vaf9vb2//b29v+Ghob/QkJC/0JCQv9CQkL/QkJC/4aGhv/29vb/9vb2//b2 + 9p8AAAAAAAAAAPb29v/29vb/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC//b29v/29vb/AAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vaf9vb2//b29v+Ghob/QkJC/0JCQv+Ghob/9vb2//b2 + 9v/29vafAAAAAAAAAAAAAAAA9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/9vb2//b2 + 9v8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vaf9vb2//b29v+Ghob/hoaG//b2 + 9v/29vb/9vb2nwAAAAAAAAAAAAAAAAAAAAD29vb/9vb2/8nJyf/Jycn/ycnJ/8nJyf/Jycn/ycnJ/8nJ + yf/29vb/9vb2/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vaf9vb2//b2 + 9v/29vb/9vb2//b29p8AAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAD29vaf9vb2//b29v/29vafAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2QPb29kD29vZA9vb2QPb2 + 9kD29vZA9vb2QPb29kD29vZA9vb2QPb29kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD29vaf9vb2nwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP// + //8AAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAD/8AAA//AAAP/wAA + Dn8AAAw/AAAIHwAAAA8AAAAHAAAAAwAfgAEAHwAAAB8AAAAfgAEAH8ADAB/gBwAf8A8AH/gfAB/8PwAf + /n//////KAAAABAAAAAgAAAAAQAgAAAAAABABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v8AAAAAAAAAAAAA + AAD29vb/QkJC/0JCQv9CQkL/9vb2/0JCQv9CQkL/QkJC//b29v9CQkL/QkJC/0JCQv/29vb/AAAAAAAA + AAAAAAAA9vb2/0JCQv9CQkL/QkJC//b29v9CQkL/QkJC/0JCQv/29vb/QkJC/0JCQv9CQkL/9vb2/wAA + AAAAAAAAAAAAAPb29v9CQkL/QkJC/0JCQv/29vb/QkJC/0JCQv9CQkL/9vb2/0JCQv9CQkL/QkJC//b2 + 9v8AAAAAAAAAAAAAAAD29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/AAAAAAAAAAAAAAAA9vb2/0JCQv9CQkL/QkJC//b29v9CQkL/QkJC/0JCQv/29vb/AAAAAAAA + AAD29vYgAAAAAAAAAAAAAAAAAAAAAPb29v9CQkL/QkJC/0JCQv/29vb/QkJC/0JCQv9CQkL/9vb2/wAA + AAD29vZg9vb2//b29mAAAAAAAAAAAAAAAAD29vb/QkJC/0JCQv9CQkL/9vb2/0JCQv9CQkL/QkJC//b2 + 9v/29vZg6+vr/4aGhv/r6+v/9vb2YAAAAAAAAAAA9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/6+vr/2RkZP9CQkL/ZGRk/+vr6//29vZgAAAAAPb29v9CQkL/QkJC/0JCQv/29vb/AAAAAAAA + AAD29vYg9vb2/4aGhv9CQkL/QkJC/0JCQv+Ghob/9vb27wAAAAD29vb/QkJC/0JCQv9CQkL/9vb2/wAA + AAAAAAAAAAAAAPb29mDr6+v/ZGRk/0JCQv9kZGT/6urq7/b29jAAAAAA9vb2/0JCQv9CQkL/QkJC//b2 + 9v8AAAAAAAAAAAAAAAAAAAAA9vb2YOvr6/+Ghob/6urq7/b29jAAAAAAAAAAAPb29v/29vb/9vb2//b2 + 9v/29vb/AAAAAAAAAAAAAAAAAAAAAAAAAAD29vZg9vb27/b29jAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAA//8AAIAD + AACAAwAAgAMAAIADAACAAwAAgDcAAIAjAACAAQAAgAAAAIMAAACDgAAAg8EAAIPjAAD//wAA + + + \ No newline at end of file diff --git a/ClientsLibrary/Properties/Resources.Designer.cs b/ClientsLibrary/Properties/Resources.Designer.cs index 77afc7d..5748969 100644 --- a/ClientsLibrary/Properties/Resources.Designer.cs +++ b/ClientsLibrary/Properties/Resources.Designer.cs @@ -60,6 +60,316 @@ namespace ClientsLibrary.Properties { } } + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap _7z { + get { + object obj = ResourceManager.GetObject("7z", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap _class { + get { + object obj = ResourceManager.GetObject("class", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap ai { + get { + object obj = ResourceManager.GetObject("ai", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap aiff { + get { + object obj = ResourceManager.GetObject("aiff", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap arj { + get { + object obj = ResourceManager.GetObject("arj", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap asc { + get { + object obj = ResourceManager.GetObject("asc", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap asp { + get { + object obj = ResourceManager.GetObject("asp", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap audio { + get { + object obj = ResourceManager.GetObject("audio", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap avi { + get { + object obj = ResourceManager.GetObject("avi", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap bin { + get { + object obj = ResourceManager.GetObject("bin", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap bmp { + get { + object obj = ResourceManager.GetObject("bmp", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap bz2 { + get { + object obj = ResourceManager.GetObject("bz2", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap c { + get { + object obj = ResourceManager.GetObject("c", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap cdr { + get { + object obj = ResourceManager.GetObject("cdr", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap cfc { + get { + object obj = ResourceManager.GetObject("cfc", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap cfm { + get { + object obj = ResourceManager.GetObject("cfm", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap chm { + get { + object obj = ResourceManager.GetObject("chm", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap conf { + get { + object obj = ResourceManager.GetObject("conf", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap cpp { + get { + object obj = ResourceManager.GetObject("cpp", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap cs { + get { + object obj = ResourceManager.GetObject("cs", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap css { + get { + object obj = ResourceManager.GetObject("css", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap csv { + get { + object obj = ResourceManager.GetObject("csv", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap deb { + get { + object obj = ResourceManager.GetObject("deb", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap divx { + get { + object obj = ResourceManager.GetObject("divx", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap doc { + get { + object obj = ResourceManager.GetObject("doc", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap docx { + get { + object obj = ResourceManager.GetObject("docx", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap dot { + get { + object obj = ResourceManager.GetObject("dot", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap eml { + get { + object obj = ResourceManager.GetObject("eml", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap enc { + get { + object obj = ResourceManager.GetObject("enc", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap eps { + get { + object obj = ResourceManager.GetObject("eps", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap exe { + get { + object obj = ResourceManager.GetObject("exe", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// 查找 System.Drawing.Bitmap 类型的本地化资源。 /// @@ -70,6 +380,26 @@ namespace ClientsLibrary.Properties { } } + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap f4v { + get { + object obj = ResourceManager.GetObject("f4v", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap file { + get { + object obj = ResourceManager.GetObject("file", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// 查找 System.Drawing.Bitmap 类型的本地化资源。 /// @@ -79,5 +409,735 @@ namespace ClientsLibrary.Properties { return ((System.Drawing.Bitmap)(obj)); } } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap flv { + get { + object obj = ResourceManager.GetObject("flv", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap gif { + get { + object obj = ResourceManager.GetObject("gif", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap gz { + get { + object obj = ResourceManager.GetObject("gz", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap hlp { + get { + object obj = ResourceManager.GetObject("hlp", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap htm { + get { + object obj = ResourceManager.GetObject("htm", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap html { + get { + object obj = ResourceManager.GetObject("html", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap ics { + get { + object obj = ResourceManager.GetObject("ics", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap image { + get { + object obj = ResourceManager.GetObject("image", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap iso { + get { + object obj = ResourceManager.GetObject("iso", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap jar { + get { + object obj = ResourceManager.GetObject("jar", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap java { + get { + object obj = ResourceManager.GetObject("java", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap jpg { + get { + object obj = ResourceManager.GetObject("jpg", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap js { + get { + object obj = ResourceManager.GetObject("js", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap jsp { + get { + object obj = ResourceManager.GetObject("jsp", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap lua { + get { + object obj = ResourceManager.GetObject("lua", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap m { + get { + object obj = ResourceManager.GetObject("m", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap mm { + get { + object obj = ResourceManager.GetObject("mm", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap mov { + get { + object obj = ResourceManager.GetObject("mov", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap mp3 { + get { + object obj = ResourceManager.GetObject("mp3", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap mpg { + get { + object obj = ResourceManager.GetObject("mpg", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap msi { + get { + object obj = ResourceManager.GetObject("msi", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap odc { + get { + object obj = ResourceManager.GetObject("odc", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap odf { + get { + object obj = ResourceManager.GetObject("odf", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap odg { + get { + object obj = ResourceManager.GetObject("odg", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap odi { + get { + object obj = ResourceManager.GetObject("odi", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap odp { + get { + object obj = ResourceManager.GetObject("odp", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap ods { + get { + object obj = ResourceManager.GetObject("ods", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap odt { + get { + object obj = ResourceManager.GetObject("odt", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap ogg { + get { + object obj = ResourceManager.GetObject("ogg", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap pdf { + get { + object obj = ResourceManager.GetObject("pdf", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap perl { + get { + object obj = ResourceManager.GetObject("perl", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap pgp { + get { + object obj = ResourceManager.GetObject("pgp", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap php { + get { + object obj = ResourceManager.GetObject("php", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap pl { + get { + object obj = ResourceManager.GetObject("pl", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap png { + get { + object obj = ResourceManager.GetObject("png", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap ppt { + get { + object obj = ResourceManager.GetObject("ppt", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap ps { + get { + object obj = ResourceManager.GetObject("ps", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap psd { + get { + object obj = ResourceManager.GetObject("psd", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap py { + get { + object obj = ResourceManager.GetObject("py", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap ram { + get { + object obj = ResourceManager.GetObject("ram", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap rar { + get { + object obj = ResourceManager.GetObject("rar", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap rb { + get { + object obj = ResourceManager.GetObject("rb", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap rm { + get { + object obj = ResourceManager.GetObject("rm", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap rpm { + get { + object obj = ResourceManager.GetObject("rpm", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap rtf { + get { + object obj = ResourceManager.GetObject("rtf", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap ruby { + get { + object obj = ResourceManager.GetObject("ruby", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap sig { + get { + object obj = ResourceManager.GetObject("sig", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap sql { + get { + object obj = ResourceManager.GetObject("sql", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap svg { + get { + object obj = ResourceManager.GetObject("svg", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap swf { + get { + object obj = ResourceManager.GetObject("swf", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap sxc { + get { + object obj = ResourceManager.GetObject("sxc", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap sxd { + get { + object obj = ResourceManager.GetObject("sxd", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap sxi { + get { + object obj = ResourceManager.GetObject("sxi", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap sxw { + get { + object obj = ResourceManager.GetObject("sxw", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap tar { + get { + object obj = ResourceManager.GetObject("tar", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap tex { + get { + object obj = ResourceManager.GetObject("tex", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap tgz { + get { + object obj = ResourceManager.GetObject("tgz", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap tif { + get { + object obj = ResourceManager.GetObject("tif", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap ttf { + get { + object obj = ResourceManager.GetObject("ttf", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap txt { + get { + object obj = ResourceManager.GetObject("txt", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap vb { + get { + object obj = ResourceManager.GetObject("vb", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap vcf { + get { + object obj = ResourceManager.GetObject("vcf", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap vdo { + get { + object obj = ResourceManager.GetObject("vdo", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap video { + get { + object obj = ResourceManager.GetObject("video", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap vsd { + get { + object obj = ResourceManager.GetObject("vsd", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap wav { + get { + object obj = ResourceManager.GetObject("wav", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap wma { + get { + object obj = ResourceManager.GetObject("wma", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap xls { + get { + object obj = ResourceManager.GetObject("xls", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap xml { + get { + object obj = ResourceManager.GetObject("xml", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap xpi { + get { + object obj = ResourceManager.GetObject("xpi", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap xul { + get { + object obj = ResourceManager.GetObject("xul", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap xvid { + get { + object obj = ResourceManager.GetObject("xvid", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap zip { + get { + object obj = ResourceManager.GetObject("zip", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } } } diff --git a/ClientsLibrary/Properties/Resources.resx b/ClientsLibrary/Properties/Resources.resx index 31782f8..354a68d 100644 --- a/ClientsLibrary/Properties/Resources.resx +++ b/ClientsLibrary/Properties/Resources.resx @@ -117,11 +117,330 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - ..\img\ExtensionManager_vsix_OSReg_16x.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - + ..\img\Flagthread_7317.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\img\ExtensionManager_vsix_OSReg_16x.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + + ..\img\fileIcon\7z.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\ai.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\aiff.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\arj.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\asc.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\asp.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\audio.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\avi.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\bin.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\bmp.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\bz2.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\c.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\cdr.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\cfc.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\cfm.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\chm.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\class.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\conf.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\cpp.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\cs.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\css.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\csv.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\deb.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\divx.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\doc.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\docx.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\dot.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\eml.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\enc.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\eps.gif;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\exe.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\f4v.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\file.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\flv.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\gif.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\gz.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\hlp.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\htm.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\html.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\ics.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\image.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\iso.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\jar.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\java.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\jpg.gif;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\js.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\jsp.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\lua.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\m.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\mm.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\mov.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\mp3.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\mpg.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\msi.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\odc.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\odf.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\odg.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\odi.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\odp.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\ods.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\odt.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\ogg.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\pdf.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\perl.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\pgp.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\php.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\pl.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\png.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\ppt.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\ps.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\psd.gif;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\py.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\ram.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\rar.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\rb.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\rm.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\rpm.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\rtf.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\ruby.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\sig.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\sql.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\svg.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\swf.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\sxc.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\sxd.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\sxi.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\sxw.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\tar.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\tex.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\tgz.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\tif.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\ttf.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\txt.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\vb.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\vcf.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\vdo.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\video.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\vsd.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\wav.gif;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\wma.gif;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\xls.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\xml.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\xpi.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\xul.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\xvid.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\img\fileIcon\zip.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + \ No newline at end of file diff --git a/ClientsLibrary/SoftUpdateSupport/FormUpdateRemote.cs b/ClientsLibrary/SoftUpdateSupport/FormUpdateRemote.cs index 42dd894..a96b44d 100644 --- a/ClientsLibrary/SoftUpdateSupport/FormUpdateRemote.cs +++ b/ClientsLibrary/SoftUpdateSupport/FormUpdateRemote.cs @@ -9,6 +9,7 @@ using System.Windows.Forms; using HslCommunication; using HslCommunication.Enthernet; using CommonLibrary; +using ClientsLibrary.FileSupport; namespace ClientsLibrary { @@ -39,7 +40,7 @@ namespace ClientsLibrary if (ofd.ShowDialog() == DialogResult.OK) { using (FormFileOperate fUpload = new FormFileOperate( - UserClient.Net_File_Client, + UserClient.Net_Update_Client, ofd.FileNames, "ClientFiles", "", diff --git a/ClientsLibrary/UserClient.cs b/ClientsLibrary/UserClient.cs index ec465b6..b81b5d9 100644 --- a/ClientsLibrary/UserClient.cs +++ b/ClientsLibrary/UserClient.cs @@ -35,7 +35,7 @@ namespace ClientsLibrary /// /// 本软件的当前版本,用来验证更新的关键依据 /// - public static SystemVersion CurrentVersion { get; } = new SystemVersion("1.0.0.170914"); + public static SystemVersion CurrentVersion { get; } = new SystemVersion("1.0.0.170930"); /// @@ -61,12 +61,12 @@ namespace ClientsLibrary // 写入所有的历史版本信息,这样就能在更新日志的界面查看到信息 new VersionInfo() { - VersionNum=new SystemVersion("1.0.0"), - ReleaseDate=new DateTime(2017,1,1),//该版本发布的日期 - UpdateDetails=new StringBuilder( + VersionNum = new SystemVersion("1.0.0"), + ReleaseDate = new DateTime(2017, 10, 1),//该版本发布的日期 + UpdateDetails = new StringBuilder( "1.本系统第一版本正式发布使用。"+Environment.NewLine+ "2.提供了多客户端用时在线的功能。"+Environment.NewLine+ - "3.需要用户自行添加"), + "3.支持个人的文件管理功能。"), }, }; @@ -106,22 +106,39 @@ namespace ClientsLibrary }; + + + + /// - /// 用于特殊用途的文件上传下载操作 + /// 用于绝大部分用途的文件上传下载操作 /// - public static AdvancedFileClient Net_File_Client { get; set; } = new AdvancedFileClient() + public static IntegrationFileClient Net_File_Client { get; set; } = new IntegrationFileClient() { KeyToken = CommonProtocol.KeyToken, LogNet = LogNet, - ServerIpEndPoint = new IPEndPoint(IPAddress.Parse(ServerIp), CommonLibrary.CommonProtocol.Port_Advanced_File_Server) + ServerIpEndPoint = new IPEndPoint(IPAddress.Parse(ServerIp), CommonProtocol.Port_Ultimate_File_Server) }; + /// + /// 目前仅仅用于上传客户端更新文件操作 + /// + public static IntegrationFileClient Net_Update_Client { get; set; } = new IntegrationFileClient() + { + KeyToken = CommonProtocol.KeyToken, + LogNet = LogNet, + ServerIpEndPoint = new IPEndPoint(IPAddress.Parse(ServerIp), CommonProtocol.Port_Advanced_File_Server) + }; + + /// /// 客户端的日志纪录对象 /// public static HslCommunication.LogNet.ILogNet LogNet { get; set; } + + /// /// 用来处理客户端发生的未捕获的异常,将通过网络组件发送至服务器存储,用于更好的跟踪错误 /// @@ -131,12 +148,14 @@ namespace ClientsLibrary { if (e.ExceptionObject is Exception ex) { - // 使用TCP方法传送会服务器 + // 使用TCP方法传送回服务器 string info = HslCommunication.LogNet.LogNetManagment.GetSaveStringFromException(null, ex); Net_simplify_client.ReadFromServer(CommonHeadCode.SimplifyHeadCode.异常消息, info); } } + + public static Icon GetFormWindowIcon() { return Icon.ExtractAssociatedIcon(Application.ExecutablePath); diff --git a/ClientsLibrary/img/fileIcon/7z.png b/ClientsLibrary/img/fileIcon/7z.png new file mode 100644 index 0000000..1ae7712 Binary files /dev/null and b/ClientsLibrary/img/fileIcon/7z.png differ diff --git a/ClientsLibrary/img/fileIcon/ai.png b/ClientsLibrary/img/fileIcon/ai.png new file mode 100644 index 0000000..a999762 Binary files /dev/null and b/ClientsLibrary/img/fileIcon/ai.png differ diff --git a/ClientsLibrary/img/fileIcon/aiff.png b/ClientsLibrary/img/fileIcon/aiff.png new file mode 100644 index 0000000..82d523f Binary files /dev/null and b/ClientsLibrary/img/fileIcon/aiff.png differ diff --git a/ClientsLibrary/img/fileIcon/arj.png b/ClientsLibrary/img/fileIcon/arj.png new file mode 100644 index 0000000..a534ac4 Binary files /dev/null and b/ClientsLibrary/img/fileIcon/arj.png differ diff --git a/ClientsLibrary/img/fileIcon/asc.png b/ClientsLibrary/img/fileIcon/asc.png new file mode 100644 index 0000000..d9fa4a8 Binary files /dev/null and b/ClientsLibrary/img/fileIcon/asc.png differ diff --git a/ClientsLibrary/img/fileIcon/asp.png b/ClientsLibrary/img/fileIcon/asp.png new file mode 100644 index 0000000..19f6930 Binary files /dev/null and b/ClientsLibrary/img/fileIcon/asp.png differ diff --git a/ClientsLibrary/img/fileIcon/audio.png b/ClientsLibrary/img/fileIcon/audio.png new file mode 100644 index 0000000..9888325 Binary files /dev/null and b/ClientsLibrary/img/fileIcon/audio.png differ diff --git a/ClientsLibrary/img/fileIcon/avi.png b/ClientsLibrary/img/fileIcon/avi.png new file mode 100644 index 0000000..e70ba07 Binary files /dev/null and b/ClientsLibrary/img/fileIcon/avi.png differ diff --git a/ClientsLibrary/img/fileIcon/bin.png b/ClientsLibrary/img/fileIcon/bin.png new file mode 100644 index 0000000..fbd174e Binary files /dev/null and b/ClientsLibrary/img/fileIcon/bin.png differ diff --git a/ClientsLibrary/img/fileIcon/bmp.png b/ClientsLibrary/img/fileIcon/bmp.png new file mode 100644 index 0000000..175f321 Binary files /dev/null and b/ClientsLibrary/img/fileIcon/bmp.png differ diff --git a/ClientsLibrary/img/fileIcon/bz2.png b/ClientsLibrary/img/fileIcon/bz2.png new file mode 100644 index 0000000..d48cae0 Binary files /dev/null and b/ClientsLibrary/img/fileIcon/bz2.png differ diff --git a/ClientsLibrary/img/fileIcon/c.png b/ClientsLibrary/img/fileIcon/c.png new file mode 100644 index 0000000..efe18f4 Binary files /dev/null and b/ClientsLibrary/img/fileIcon/c.png differ diff --git a/ClientsLibrary/img/fileIcon/cdr.png b/ClientsLibrary/img/fileIcon/cdr.png new file mode 100644 index 0000000..178715e Binary files /dev/null and b/ClientsLibrary/img/fileIcon/cdr.png differ diff --git a/ClientsLibrary/img/fileIcon/cfc.png b/ClientsLibrary/img/fileIcon/cfc.png new file mode 100644 index 0000000..515c246 Binary files /dev/null and b/ClientsLibrary/img/fileIcon/cfc.png differ diff --git a/ClientsLibrary/img/fileIcon/cfm.png b/ClientsLibrary/img/fileIcon/cfm.png new file mode 100644 index 0000000..a4dd6d9 Binary files /dev/null and b/ClientsLibrary/img/fileIcon/cfm.png differ diff --git a/ClientsLibrary/img/fileIcon/chm.png b/ClientsLibrary/img/fileIcon/chm.png new file mode 100644 index 0000000..e38d4c4 Binary files /dev/null and b/ClientsLibrary/img/fileIcon/chm.png differ diff --git a/ClientsLibrary/img/fileIcon/class.png b/ClientsLibrary/img/fileIcon/class.png new file mode 100644 index 0000000..a39f70c Binary files /dev/null and b/ClientsLibrary/img/fileIcon/class.png differ diff --git a/ClientsLibrary/img/fileIcon/conf.png b/ClientsLibrary/img/fileIcon/conf.png new file mode 100644 index 0000000..ddffe6f Binary files /dev/null and b/ClientsLibrary/img/fileIcon/conf.png differ diff --git a/ClientsLibrary/img/fileIcon/cpp.png b/ClientsLibrary/img/fileIcon/cpp.png new file mode 100644 index 0000000..7946440 Binary files /dev/null and b/ClientsLibrary/img/fileIcon/cpp.png differ diff --git a/ClientsLibrary/img/fileIcon/cs.png b/ClientsLibrary/img/fileIcon/cs.png new file mode 100644 index 0000000..d5db29b Binary files /dev/null and b/ClientsLibrary/img/fileIcon/cs.png differ diff --git a/ClientsLibrary/img/fileIcon/css.png b/ClientsLibrary/img/fileIcon/css.png new file mode 100644 index 0000000..0401204 Binary files /dev/null and b/ClientsLibrary/img/fileIcon/css.png differ diff --git a/ClientsLibrary/img/fileIcon/csv.png b/ClientsLibrary/img/fileIcon/csv.png new file mode 100644 index 0000000..3a88353 Binary files /dev/null and b/ClientsLibrary/img/fileIcon/csv.png differ diff --git a/ClientsLibrary/img/fileIcon/deb.png b/ClientsLibrary/img/fileIcon/deb.png new file mode 100644 index 0000000..9229d87 Binary files /dev/null and b/ClientsLibrary/img/fileIcon/deb.png differ diff --git a/ClientsLibrary/img/fileIcon/divx.png b/ClientsLibrary/img/fileIcon/divx.png new file mode 100644 index 0000000..98dab8f Binary files /dev/null and b/ClientsLibrary/img/fileIcon/divx.png differ diff --git a/ClientsLibrary/img/fileIcon/doc.png b/ClientsLibrary/img/fileIcon/doc.png new file mode 100644 index 0000000..932567f Binary files /dev/null and b/ClientsLibrary/img/fileIcon/doc.png differ diff --git a/ClientsLibrary/img/fileIcon/docx.png b/ClientsLibrary/img/fileIcon/docx.png new file mode 100644 index 0000000..a9c58db Binary files /dev/null and b/ClientsLibrary/img/fileIcon/docx.png differ diff --git a/ClientsLibrary/img/fileIcon/dot.png b/ClientsLibrary/img/fileIcon/dot.png new file mode 100644 index 0000000..9f2da1a Binary files /dev/null and b/ClientsLibrary/img/fileIcon/dot.png differ diff --git a/ClientsLibrary/img/fileIcon/eml.png b/ClientsLibrary/img/fileIcon/eml.png new file mode 100644 index 0000000..02828e1 Binary files /dev/null and b/ClientsLibrary/img/fileIcon/eml.png differ diff --git a/ClientsLibrary/img/fileIcon/enc.png b/ClientsLibrary/img/fileIcon/enc.png new file mode 100644 index 0000000..cb2d7d4 Binary files /dev/null and b/ClientsLibrary/img/fileIcon/enc.png differ diff --git a/ClientsLibrary/img/fileIcon/eps.gif b/ClientsLibrary/img/fileIcon/eps.gif new file mode 100644 index 0000000..547c797 Binary files /dev/null and b/ClientsLibrary/img/fileIcon/eps.gif differ diff --git a/ClientsLibrary/img/fileIcon/exe.png b/ClientsLibrary/img/fileIcon/exe.png new file mode 100644 index 0000000..db28350 Binary files /dev/null and b/ClientsLibrary/img/fileIcon/exe.png differ diff --git a/ClientsLibrary/img/fileIcon/f4v.png b/ClientsLibrary/img/fileIcon/f4v.png new file mode 100644 index 0000000..7d94dd3 Binary files /dev/null and b/ClientsLibrary/img/fileIcon/f4v.png differ diff --git a/ClientsLibrary/img/fileIcon/file.png b/ClientsLibrary/img/fileIcon/file.png new file mode 100644 index 0000000..24d5f32 Binary files /dev/null and b/ClientsLibrary/img/fileIcon/file.png differ diff --git a/ClientsLibrary/img/fileIcon/flv.png b/ClientsLibrary/img/fileIcon/flv.png new file mode 100644 index 0000000..eb69910 Binary files /dev/null and b/ClientsLibrary/img/fileIcon/flv.png differ diff --git a/ClientsLibrary/img/fileIcon/gif.png b/ClientsLibrary/img/fileIcon/gif.png new file mode 100644 index 0000000..b4c07a9 Binary files /dev/null and b/ClientsLibrary/img/fileIcon/gif.png differ diff --git a/ClientsLibrary/img/fileIcon/gz.png b/ClientsLibrary/img/fileIcon/gz.png new file mode 100644 index 0000000..2426bd1 Binary files /dev/null and b/ClientsLibrary/img/fileIcon/gz.png differ diff --git a/ClientsLibrary/img/fileIcon/hlp.png b/ClientsLibrary/img/fileIcon/hlp.png new file mode 100644 index 0000000..4417d8e Binary files /dev/null and b/ClientsLibrary/img/fileIcon/hlp.png differ diff --git a/ClientsLibrary/img/fileIcon/htm.png b/ClientsLibrary/img/fileIcon/htm.png new file mode 100644 index 0000000..1a68121 Binary files /dev/null and b/ClientsLibrary/img/fileIcon/htm.png differ diff --git a/ClientsLibrary/img/fileIcon/html.png b/ClientsLibrary/img/fileIcon/html.png new file mode 100644 index 0000000..672cbce Binary files /dev/null and b/ClientsLibrary/img/fileIcon/html.png differ diff --git a/ClientsLibrary/img/fileIcon/ics.png b/ClientsLibrary/img/fileIcon/ics.png new file mode 100644 index 0000000..cc30930 Binary files /dev/null and b/ClientsLibrary/img/fileIcon/ics.png differ diff --git a/ClientsLibrary/img/fileIcon/image.png b/ClientsLibrary/img/fileIcon/image.png new file mode 100644 index 0000000..f83e289 Binary files /dev/null and b/ClientsLibrary/img/fileIcon/image.png differ diff --git a/ClientsLibrary/img/fileIcon/iso.png b/ClientsLibrary/img/fileIcon/iso.png new file mode 100644 index 0000000..1b2ff19 Binary files /dev/null and b/ClientsLibrary/img/fileIcon/iso.png differ diff --git a/ClientsLibrary/img/fileIcon/jar.png b/ClientsLibrary/img/fileIcon/jar.png new file mode 100644 index 0000000..4db70a2 Binary files /dev/null and b/ClientsLibrary/img/fileIcon/jar.png differ diff --git a/ClientsLibrary/img/fileIcon/java.png b/ClientsLibrary/img/fileIcon/java.png new file mode 100644 index 0000000..7489b97 Binary files /dev/null and b/ClientsLibrary/img/fileIcon/java.png differ diff --git a/ClientsLibrary/img/fileIcon/jpg.gif b/ClientsLibrary/img/fileIcon/jpg.gif new file mode 100644 index 0000000..252922e Binary files /dev/null and b/ClientsLibrary/img/fileIcon/jpg.gif differ diff --git a/ClientsLibrary/img/fileIcon/js.png b/ClientsLibrary/img/fileIcon/js.png new file mode 100644 index 0000000..522a5e1 Binary files /dev/null and b/ClientsLibrary/img/fileIcon/js.png differ diff --git a/ClientsLibrary/img/fileIcon/jsp.png b/ClientsLibrary/img/fileIcon/jsp.png new file mode 100644 index 0000000..522a5e1 Binary files /dev/null and b/ClientsLibrary/img/fileIcon/jsp.png differ diff --git a/ClientsLibrary/img/fileIcon/lua.png b/ClientsLibrary/img/fileIcon/lua.png new file mode 100644 index 0000000..7c07d02 Binary files /dev/null and b/ClientsLibrary/img/fileIcon/lua.png differ diff --git a/ClientsLibrary/img/fileIcon/m.png b/ClientsLibrary/img/fileIcon/m.png new file mode 100644 index 0000000..aa0cbae Binary files /dev/null and b/ClientsLibrary/img/fileIcon/m.png differ diff --git a/ClientsLibrary/img/fileIcon/mm.png b/ClientsLibrary/img/fileIcon/mm.png new file mode 100644 index 0000000..b737571 Binary files /dev/null and b/ClientsLibrary/img/fileIcon/mm.png differ diff --git a/ClientsLibrary/img/fileIcon/mov.png b/ClientsLibrary/img/fileIcon/mov.png new file mode 100644 index 0000000..7e7aa36 Binary files /dev/null and b/ClientsLibrary/img/fileIcon/mov.png differ diff --git a/ClientsLibrary/img/fileIcon/mp3.png b/ClientsLibrary/img/fileIcon/mp3.png new file mode 100644 index 0000000..928705d Binary files /dev/null and b/ClientsLibrary/img/fileIcon/mp3.png differ diff --git a/ClientsLibrary/img/fileIcon/mpg.png b/ClientsLibrary/img/fileIcon/mpg.png new file mode 100644 index 0000000..9a3f8ea Binary files /dev/null and b/ClientsLibrary/img/fileIcon/mpg.png differ diff --git a/ClientsLibrary/img/fileIcon/msi.png b/ClientsLibrary/img/fileIcon/msi.png new file mode 100644 index 0000000..2b7802c Binary files /dev/null and b/ClientsLibrary/img/fileIcon/msi.png differ diff --git a/ClientsLibrary/img/fileIcon/odc.png b/ClientsLibrary/img/fileIcon/odc.png new file mode 100644 index 0000000..47f65c8 Binary files /dev/null and b/ClientsLibrary/img/fileIcon/odc.png differ diff --git a/ClientsLibrary/img/fileIcon/odf.png b/ClientsLibrary/img/fileIcon/odf.png new file mode 100644 index 0000000..a2fbc51 Binary files /dev/null and b/ClientsLibrary/img/fileIcon/odf.png differ diff --git a/ClientsLibrary/img/fileIcon/odg.png b/ClientsLibrary/img/fileIcon/odg.png new file mode 100644 index 0000000..434f182 Binary files /dev/null and b/ClientsLibrary/img/fileIcon/odg.png differ diff --git a/ClientsLibrary/img/fileIcon/odi.png b/ClientsLibrary/img/fileIcon/odi.png new file mode 100644 index 0000000..74f6303 Binary files /dev/null and b/ClientsLibrary/img/fileIcon/odi.png differ diff --git a/ClientsLibrary/img/fileIcon/odp.png b/ClientsLibrary/img/fileIcon/odp.png new file mode 100644 index 0000000..a5c77f8 Binary files /dev/null and b/ClientsLibrary/img/fileIcon/odp.png differ diff --git a/ClientsLibrary/img/fileIcon/ods.png b/ClientsLibrary/img/fileIcon/ods.png new file mode 100644 index 0000000..59cc457 Binary files /dev/null and b/ClientsLibrary/img/fileIcon/ods.png differ diff --git a/ClientsLibrary/img/fileIcon/odt.png b/ClientsLibrary/img/fileIcon/odt.png new file mode 100644 index 0000000..95e16fa Binary files /dev/null and b/ClientsLibrary/img/fileIcon/odt.png differ diff --git a/ClientsLibrary/img/fileIcon/ogg.png b/ClientsLibrary/img/fileIcon/ogg.png new file mode 100644 index 0000000..62cea6a Binary files /dev/null and b/ClientsLibrary/img/fileIcon/ogg.png differ diff --git a/ClientsLibrary/img/fileIcon/pdf.png b/ClientsLibrary/img/fileIcon/pdf.png new file mode 100644 index 0000000..9e0e959 Binary files /dev/null and b/ClientsLibrary/img/fileIcon/pdf.png differ diff --git a/ClientsLibrary/img/fileIcon/perl.png b/ClientsLibrary/img/fileIcon/perl.png new file mode 100644 index 0000000..6550870 Binary files /dev/null and b/ClientsLibrary/img/fileIcon/perl.png differ diff --git a/ClientsLibrary/img/fileIcon/pgp.png b/ClientsLibrary/img/fileIcon/pgp.png new file mode 100644 index 0000000..e6b35f3 Binary files /dev/null and b/ClientsLibrary/img/fileIcon/pgp.png differ diff --git a/ClientsLibrary/img/fileIcon/php.png b/ClientsLibrary/img/fileIcon/php.png new file mode 100644 index 0000000..3d6f989 Binary files /dev/null and b/ClientsLibrary/img/fileIcon/php.png differ diff --git a/ClientsLibrary/img/fileIcon/pl.png b/ClientsLibrary/img/fileIcon/pl.png new file mode 100644 index 0000000..ad2324e Binary files /dev/null and b/ClientsLibrary/img/fileIcon/pl.png differ diff --git a/ClientsLibrary/img/fileIcon/png.png b/ClientsLibrary/img/fileIcon/png.png new file mode 100644 index 0000000..f0b5b00 Binary files /dev/null and b/ClientsLibrary/img/fileIcon/png.png differ diff --git a/ClientsLibrary/img/fileIcon/ppt.png b/ClientsLibrary/img/fileIcon/ppt.png new file mode 100644 index 0000000..adaefc6 Binary files /dev/null and b/ClientsLibrary/img/fileIcon/ppt.png differ diff --git a/ClientsLibrary/img/fileIcon/ps.png b/ClientsLibrary/img/fileIcon/ps.png new file mode 100644 index 0000000..487c3cb Binary files /dev/null and b/ClientsLibrary/img/fileIcon/ps.png differ diff --git a/ClientsLibrary/img/fileIcon/psd.gif b/ClientsLibrary/img/fileIcon/psd.gif new file mode 100644 index 0000000..d6e26f8 Binary files /dev/null and b/ClientsLibrary/img/fileIcon/psd.gif differ diff --git a/ClientsLibrary/img/fileIcon/py.png b/ClientsLibrary/img/fileIcon/py.png new file mode 100644 index 0000000..4cb0294 Binary files /dev/null and b/ClientsLibrary/img/fileIcon/py.png differ diff --git a/ClientsLibrary/img/fileIcon/ram.png b/ClientsLibrary/img/fileIcon/ram.png new file mode 100644 index 0000000..1a54d76 Binary files /dev/null and b/ClientsLibrary/img/fileIcon/ram.png differ diff --git a/ClientsLibrary/img/fileIcon/rar.png b/ClientsLibrary/img/fileIcon/rar.png new file mode 100644 index 0000000..a6af4d1 Binary files /dev/null and b/ClientsLibrary/img/fileIcon/rar.png differ diff --git a/ClientsLibrary/img/fileIcon/rb.png b/ClientsLibrary/img/fileIcon/rb.png new file mode 100644 index 0000000..3067016 Binary files /dev/null and b/ClientsLibrary/img/fileIcon/rb.png differ diff --git a/ClientsLibrary/img/fileIcon/rm.png b/ClientsLibrary/img/fileIcon/rm.png new file mode 100644 index 0000000..a2db68e Binary files /dev/null and b/ClientsLibrary/img/fileIcon/rm.png differ diff --git a/ClientsLibrary/img/fileIcon/rpm.png b/ClientsLibrary/img/fileIcon/rpm.png new file mode 100644 index 0000000..22212ea Binary files /dev/null and b/ClientsLibrary/img/fileIcon/rpm.png differ diff --git a/ClientsLibrary/img/fileIcon/rtf.png b/ClientsLibrary/img/fileIcon/rtf.png new file mode 100644 index 0000000..d8bada5 Binary files /dev/null and b/ClientsLibrary/img/fileIcon/rtf.png differ diff --git a/ClientsLibrary/img/fileIcon/ruby.png b/ClientsLibrary/img/fileIcon/ruby.png new file mode 100644 index 0000000..c07bca6 Binary files /dev/null and b/ClientsLibrary/img/fileIcon/ruby.png differ diff --git a/ClientsLibrary/img/fileIcon/sig.png b/ClientsLibrary/img/fileIcon/sig.png new file mode 100644 index 0000000..3d8b19d Binary files /dev/null and b/ClientsLibrary/img/fileIcon/sig.png differ diff --git a/ClientsLibrary/img/fileIcon/sql.png b/ClientsLibrary/img/fileIcon/sql.png new file mode 100644 index 0000000..8b9581a Binary files /dev/null and b/ClientsLibrary/img/fileIcon/sql.png differ diff --git a/ClientsLibrary/img/fileIcon/svg.png b/ClientsLibrary/img/fileIcon/svg.png new file mode 100644 index 0000000..27faad6 Binary files /dev/null and b/ClientsLibrary/img/fileIcon/svg.png differ diff --git a/ClientsLibrary/img/fileIcon/swf.png b/ClientsLibrary/img/fileIcon/swf.png new file mode 100644 index 0000000..0729ed0 Binary files /dev/null and b/ClientsLibrary/img/fileIcon/swf.png differ diff --git a/ClientsLibrary/img/fileIcon/sxc.png b/ClientsLibrary/img/fileIcon/sxc.png new file mode 100644 index 0000000..deb1673 Binary files /dev/null and b/ClientsLibrary/img/fileIcon/sxc.png differ diff --git a/ClientsLibrary/img/fileIcon/sxd.png b/ClientsLibrary/img/fileIcon/sxd.png new file mode 100644 index 0000000..5801bb2 Binary files /dev/null and b/ClientsLibrary/img/fileIcon/sxd.png differ diff --git a/ClientsLibrary/img/fileIcon/sxi.png b/ClientsLibrary/img/fileIcon/sxi.png new file mode 100644 index 0000000..2a94290 Binary files /dev/null and b/ClientsLibrary/img/fileIcon/sxi.png differ diff --git a/ClientsLibrary/img/fileIcon/sxw.png b/ClientsLibrary/img/fileIcon/sxw.png new file mode 100644 index 0000000..a775c83 Binary files /dev/null and b/ClientsLibrary/img/fileIcon/sxw.png differ diff --git a/ClientsLibrary/img/fileIcon/tar.png b/ClientsLibrary/img/fileIcon/tar.png new file mode 100644 index 0000000..5a2f717 Binary files /dev/null and b/ClientsLibrary/img/fileIcon/tar.png differ diff --git a/ClientsLibrary/img/fileIcon/tex.png b/ClientsLibrary/img/fileIcon/tex.png new file mode 100644 index 0000000..e46a516 Binary files /dev/null and b/ClientsLibrary/img/fileIcon/tex.png differ diff --git a/ClientsLibrary/img/fileIcon/tgz.png b/ClientsLibrary/img/fileIcon/tgz.png new file mode 100644 index 0000000..141acf5 Binary files /dev/null and b/ClientsLibrary/img/fileIcon/tgz.png differ diff --git a/ClientsLibrary/img/fileIcon/tif.png b/ClientsLibrary/img/fileIcon/tif.png new file mode 100644 index 0000000..59d7b8a Binary files /dev/null and b/ClientsLibrary/img/fileIcon/tif.png differ diff --git a/ClientsLibrary/img/fileIcon/ttf.png b/ClientsLibrary/img/fileIcon/ttf.png new file mode 100644 index 0000000..e1bc247 Binary files /dev/null and b/ClientsLibrary/img/fileIcon/ttf.png differ diff --git a/ClientsLibrary/img/fileIcon/txt.png b/ClientsLibrary/img/fileIcon/txt.png new file mode 100644 index 0000000..da20009 Binary files /dev/null and b/ClientsLibrary/img/fileIcon/txt.png differ diff --git a/ClientsLibrary/img/fileIcon/vb.png b/ClientsLibrary/img/fileIcon/vb.png new file mode 100644 index 0000000..4190f9a Binary files /dev/null and b/ClientsLibrary/img/fileIcon/vb.png differ diff --git a/ClientsLibrary/img/fileIcon/vcf.png b/ClientsLibrary/img/fileIcon/vcf.png new file mode 100644 index 0000000..195ab38 Binary files /dev/null and b/ClientsLibrary/img/fileIcon/vcf.png differ diff --git a/ClientsLibrary/img/fileIcon/vdo.png b/ClientsLibrary/img/fileIcon/vdo.png new file mode 100644 index 0000000..b0ce7bb Binary files /dev/null and b/ClientsLibrary/img/fileIcon/vdo.png differ diff --git a/ClientsLibrary/img/fileIcon/video.png b/ClientsLibrary/img/fileIcon/video.png new file mode 100644 index 0000000..b89fc52 Binary files /dev/null and b/ClientsLibrary/img/fileIcon/video.png differ diff --git a/ClientsLibrary/img/fileIcon/vsd.png b/ClientsLibrary/img/fileIcon/vsd.png new file mode 100644 index 0000000..d14b81d Binary files /dev/null and b/ClientsLibrary/img/fileIcon/vsd.png differ diff --git a/ClientsLibrary/img/fileIcon/wav.gif b/ClientsLibrary/img/fileIcon/wav.gif new file mode 100644 index 0000000..ffa4861 Binary files /dev/null and b/ClientsLibrary/img/fileIcon/wav.gif differ diff --git a/ClientsLibrary/img/fileIcon/wma.gif b/ClientsLibrary/img/fileIcon/wma.gif new file mode 100644 index 0000000..c279882 Binary files /dev/null and b/ClientsLibrary/img/fileIcon/wma.gif differ diff --git a/ClientsLibrary/img/fileIcon/xls.png b/ClientsLibrary/img/fileIcon/xls.png new file mode 100644 index 0000000..e8cd58d Binary files /dev/null and b/ClientsLibrary/img/fileIcon/xls.png differ diff --git a/ClientsLibrary/img/fileIcon/xml.png b/ClientsLibrary/img/fileIcon/xml.png new file mode 100644 index 0000000..eb46323 Binary files /dev/null and b/ClientsLibrary/img/fileIcon/xml.png differ diff --git a/ClientsLibrary/img/fileIcon/xpi.png b/ClientsLibrary/img/fileIcon/xpi.png new file mode 100644 index 0000000..5e537e2 Binary files /dev/null and b/ClientsLibrary/img/fileIcon/xpi.png differ diff --git a/ClientsLibrary/img/fileIcon/xul.png b/ClientsLibrary/img/fileIcon/xul.png new file mode 100644 index 0000000..552903a Binary files /dev/null and b/ClientsLibrary/img/fileIcon/xul.png differ diff --git a/ClientsLibrary/img/fileIcon/xvid.png b/ClientsLibrary/img/fileIcon/xvid.png new file mode 100644 index 0000000..d8429dc Binary files /dev/null and b/ClientsLibrary/img/fileIcon/xvid.png differ diff --git a/ClientsLibrary/img/fileIcon/zip.png b/ClientsLibrary/img/fileIcon/zip.png new file mode 100644 index 0000000..ba49b6a Binary files /dev/null and b/ClientsLibrary/img/fileIcon/zip.png differ diff --git a/CommonLibrary/AccountSupport/ServerAccount.cs b/CommonLibrary/AccountSupport/ServerAccount.cs index e0b4033..b3e9b39 100644 --- a/CommonLibrary/AccountSupport/ServerAccount.cs +++ b/CommonLibrary/AccountSupport/ServerAccount.cs @@ -176,6 +176,7 @@ namespace CommonLibrary bool result = true; hybirdLock.Enter(); + // 账户名重复的时候不允许添加 for (int i = 0; i < all_list_accounts.Count; i++) { if (all_list_accounts[i].UserName == account.UserName) @@ -184,8 +185,19 @@ namespace CommonLibrary break; } } - all_list_accounts.Add(account); - ILogNet?.WriteInfo(SoftResources.StringResouce.AccountAddSuccess + account.UserName); + + // 账户名为空的时候不允许添加 + if(string.IsNullOrEmpty(account.UserName)) + { + result = false; + } + + // 检测通过后进行添加账户名 + if (result) + { + all_list_accounts.Add(account); + ILogNet?.WriteInfo(SoftResources.StringResouce.AccountAddSuccess + account.UserName); + } hybirdLock.Leave(); return result; diff --git a/CommonLibrary/AccountSupport/UserAccount.cs b/CommonLibrary/AccountSupport/UserAccount.cs index 16f85da..807730d 100644 --- a/CommonLibrary/AccountSupport/UserAccount.cs +++ b/CommonLibrary/AccountSupport/UserAccount.cs @@ -102,6 +102,10 @@ namespace CommonLibrary /// 大尺寸头像的MD5传送名称 /// public static string LargePortraitText { get { return "LargePortrait"; } } + /// + /// 系统的框架版本,框架版本不一致,由服务器决定是否允许客户端登录 + /// + public static string FrameworkVersion { get { return "FrameworkVersion"; } } #endregion diff --git a/CommonLibrary/BasicSupport/SoftSettings.cs b/CommonLibrary/BasicSupport/SoftSettings.cs index b965dcc..f40baa9 100644 --- a/CommonLibrary/BasicSupport/SoftSettings.cs +++ b/CommonLibrary/BasicSupport/SoftSettings.cs @@ -58,6 +58,10 @@ namespace CommonLibrary /// public bool AllowUserMultiOnline { get; set; } = false; /// + /// 当框架版本不对的时候,是否允许登录 + /// + public bool AllowLoginWhenFramewordVersionNotCheck { get; set; } = false; + /// /// 不允许登录系统的原因 /// public string Account_Forbidden_Reason { get; set; } = "系统处于维护中,请稍后登录。"; @@ -158,6 +162,7 @@ namespace CommonLibrary { nameof(SystemFactories), new JArray(SystemFactories) }, { nameof(WhetherToEnableTrustedClientAuthentication),new JValue(WhetherToEnableTrustedClientAuthentication) }, { nameof(TrustedClientList),new JArray(TrustedClientList) }, + { nameof(AllowLoginWhenFramewordVersionNotCheck), new JValue(AllowLoginWhenFramewordVersionNotCheck) }, }; return json.ToString(); } @@ -173,6 +178,9 @@ namespace CommonLibrary Can_Account_Login = SoftBasic.GetValueFromJsonObject(json, nameof(Can_Account_Login), Can_Account_Login); AllowUserMultiOnline = SoftBasic.GetValueFromJsonObject(json, nameof(AllowUserMultiOnline), AllowUserMultiOnline); Account_Forbidden_Reason = SoftBasic.GetValueFromJsonObject(json, nameof(Account_Forbidden_Reason), Account_Forbidden_Reason); + AllowLoginWhenFramewordVersionNotCheck = SoftBasic.GetValueFromJsonObject(json, nameof(AllowLoginWhenFramewordVersionNotCheck), AllowLoginWhenFramewordVersionNotCheck); + + if (json[nameof(SystemFactories)] != null) { diff --git a/CommonLibrary/ProtocolSupport/CommonProtocol.cs b/CommonLibrary/ProtocolSupport/CommonProtocol.cs index 2f9262f..29336b1 100644 --- a/CommonLibrary/ProtocolSupport/CommonProtocol.cs +++ b/CommonLibrary/ProtocolSupport/CommonProtocol.cs @@ -43,7 +43,7 @@ namespace CommonLibrary * **************************************************************************/ - SoftBasic.FrameworkVersion = new SystemVersion("1.4.10"); + SoftBasic.FrameworkVersion = new SystemVersion("1.5.0"); } @@ -87,7 +87,7 @@ namespace CommonLibrary /// /// 共享文件的端口号 /// - public static int Port_Share_File { get; } = 34261; + public static int Port_Ultimate_File_Server { get; } = 34261; /// /// 用于UDP传输的端口号 /// diff --git a/Public/HslCommunication.dll b/Public/HslCommunication.dll index f44a939..0745ea1 100644 Binary files a/Public/HslCommunication.dll and b/Public/HslCommunication.dll differ diff --git a/Public/HslCommunication.xml b/Public/HslCommunication.xml index 50df3e5..eb8adcc 100644 --- a/Public/HslCommunication.xml +++ b/Public/HslCommunication.xml @@ -2117,189 +2117,6 @@ 离开锁 - - - 用来保存的文件信息类 - - - - - 文件的名称 - - - - - 文件的大小 - - - - - 用于用户自定义的标识 - - - - - 文件的上传人 - - - - - 文件的上传日期 - - - - - 文件的描述,说明备注 - - - - - 文件在服务器的实际存储路径 - - - - - 文件被下载的次数 - - - - - 文件的后缀名 - - - - - 文件存储的真实映射名称 - - - - - 获取大小 - - - - - - 获取文件对象显示图标 - - - - - - 根据文件后缀选择需要对应显示的文件图标,包含了二十多种常用文件的图标 - - 文件的扩展名 - 图形对象 - - - - 一个简单的共享文件类,配合下载控件和上传窗口一起使用,适用于系统公共的文件管理 - - - - - 实例化对象,需要指定存储规则 - - - - - 存储文件列表的txt文件名,默认D:\\files.txt - - - - - 当服务器文件变化时,有文件删除或是添加时,触发的事件,可以选中通知客户端刷新数据 - - - - - 文件的列表 - - - - - 文件列表的混合锁 - - - - - 返回所有文件的数量 - - - - - - 新增一个文件对象 - - - - - - 根据文件名称,删除一个文件对象 - - - - - - 判断映射文件名是不是存在于文件列表中 - - - - - - - 追加一个文件对象的下载数据 - - - - - - 判断文件对对象管理中是否存在 - - - - - - - 根据文件名称获取文件类型 - - - - - - - 根据文件名称获取文件类型 - - - - - - - 获取JSON字符串 - - - - - - 一个乐观并发模型高性能执行类 - - - - - 从文件中加载数据信息 - - - - - 请求接入的回调方法 - - - - - - 刷新客户端的文件信息 - - 文件传输客户端基类 @@ -2337,44 +2154,12 @@ 汇报进度 - + - 共享文件客户端类,负责共享文件的文件上传,下载,删除等等操作 + 负责分类文件传输的客户端,用来上传,下载文件信息 - - - 删除服务器的文件操作 - - 文件名称,带后缀 - - - - - 下载服务器的文件到本地的文件操作 - - 文件名称,带后缀 - 下载的进度报告 - 准备本地保存的名称 - - - - - 上传本地的文件到服务器操作 - - 本地的完整路径的文件名称 - - - - - - - - - 负责分类文件传输的客户端,用来上传,下载信息 - - - + 删除服务器的文件操作 @@ -2384,7 +2169,7 @@ 第三大类 - + 下载服务器的文件到本地的文件操作 @@ -2396,7 +2181,7 @@ 准备本地保存的名称 - + 上传本地的文件到服务器操作 @@ -2405,10 +2190,12 @@ 第一大类 第二大类 第三大类 + 文件的额外描述 + 文件的上传人 上传的进度报告 - + 根据三种分类信息,还原成在服务器的相对路径,包含文件 @@ -2418,7 +2205,7 @@ 第三类 - + 根据三种分类信息,还原成在服务器的相对路径,仅仅路径 @@ -2427,17 +2214,17 @@ 第三类 - + 获取指定路径下的所有的文档 - - - - + 获取得到的文件合集 + 第一大类 + 第二大类 + 第三大类 - + 获取指定路径下的所有的文档 @@ -2447,15 +2234,16 @@ - + 获取指定路径下的所有的文档 - - - - - + 想要获取的队列 + 指令 + 第一大类 + 第二大类 + 第三大类 + 数组的类型 @@ -2469,6 +2257,79 @@ + + + 初始化数据 + + + + + 检查文件夹 + + + + + 从网络套接字接收文件并移动到目标的文件夹中,如果结果异常,则结束通讯 + + + + + + + + + + + + + + 用于接收上传文件时的临时文件夹,临时文件使用结束后会被删除 + + + + + 终极文件管理服务器,实现所有的文件分类管理,读写分离,不支持直接访问文件名 + + + + + 所有文件组操作的词典锁 + + + + + 词典的锁 + + + + + 获取当前目录的读写锁,如果没有会自动创建 + + 相对路径名 + 读写锁 + + + + 从套接字接收文件并保存,更新文件列表 + + 套接字 + 保存的文件名 + + + + + + 根据文件的显示名称转化为真实存储的名称 + + 带分类功能的文件夹名称 + + + + + 处理数据 + + + 基于TCP的服务器引擎端核心类 @@ -2934,240 +2795,6 @@ - - - 文件显示的子控件类 - - - - - 生成一个文件对象的显示控件 - - 令牌 - 日志组件 - 服务器的IP地址 - 服务器的端口号 - 用户自定义的删除确认委托,可用于验证权限及密码 - - - - 服务器的IP地址 - - - - - 服务器的端口号 - - - - - 设置文件数据 - - 文件的信息对象 - 删除控件的使能委托 - - - - 必需的设计器变量。 - - - - - 清理所有正在使用的资源。 - - 如果应释放托管资源,为 true;否则为 false。 - - - - 设计器支持所需的方法 - 不要修改 - 使用代码编辑器修改此方法的内容。 - - - - - 上传或下载的控件 - - - - - 上传的实例化方法 - - 客户端文件传送引擎 - 完整的包含路径的本地文件路径 - 文件所属的工厂 - 文件所属的分类 - 文件所属的设备ID - - - - 下载的实例化方法 - - 客户端文件传送引擎 - 服务器的文件名称,包含后缀 - 文件所属的第一大类 - 文件所属的第二大类 - 文件所属的第三大类 - 本地保存的路径 - - - - 指示本次上传或是下载是否结束 - - - - - 文件的原始路径 - - - - - 文件所属的工厂分类 - - - - - 文件所属的类别 - - - - - 文件所属的特殊ID - - - - - 文件保存的路径,文件下载的时候所需的 - - - - - 开始上传文件 - - - - - 启动下载文件 - - - - - 必需的设计器变量。 - - - - - 清理所有正在使用的资源。 - - 如果应释放托管资源,为 true;否则为 false。 - - - - 设计器支持所需的方法 - 不要修改 - 使用代码编辑器修改此方法的内容。 - - - - - 用于文件上传或下载的窗口 - - - - - 实例化一个文件上传的窗口 - - 客户端的文件引擎 - 等待上传的文件数组 - 第一大类 - 第二大类 - 第三大类 - - - - 实例化一个文件下载的窗口 - - 客户端的文件传送引擎 - 等待下载的文件 - 第一大类 - 第二大类 - 第三大类 - 保存路径 - - - - 是否是下载文件操作 - - - - - Required designer variable. - - - - - Clean up any resources being used. - - true if managed resources should be disposed; otherwise, false. - - - - Required method for Designer support - do not modify - the contents of this method with the code editor. - - - - - 用于文件上传的类 - - - - - 实例化一个文件上传的窗口 - - 令牌 - 日志组件 - 服务器的IP地址 - 服务器的端口号 - 文件上传人的名称 - - - - 服务器的IP地址 - - - - - 服务器的端口号 - - - - - 文件长传人的名称 - - - - - 用于报告进度的方法 - - - - - - - Required designer variable. - - - - - Clean up any resources being used. - - true if managed resources should be disposed; otherwise, false. - - - - Required method for Designer support - do not modify - the contents of this method with the code editor. - - 异步状态的基类 @@ -4429,18 +4056,12 @@ 完整的文件路径 读写锁 - + - 从网络套接字接收文件并移动到目标的文件夹中,如果结果异常,则结束通讯 + 移动一个文件到新的文件去 - - + - - - - - @@ -4457,9 +4078,9 @@ 服务器启动时的操作 - + - 检查2个文件夹是否存在,不存在就创建 + 检查文件夹是否存在,不存在就创建 @@ -4467,11 +4088,6 @@ 文件所存储的路径 - - - 用于接收上传文件时的临时文件夹,临时文件使用结束后会被删除 - - 获取文件夹的所有文件列表 @@ -4486,6 +4102,115 @@ 额外的片段名称 + + + 文件集容器,绑定一个文件夹的文件信息组 + + + + + 实例化一个新的数据管理容器 + + 日志记录对象,可以为空 + + + + + 包含所有文件列表信息的json文本缓存 + + + + + 获取文件的数量 + + + + + 当文件数量发生变化的时候触发的事件 + + + + + 下载文件时调用 + + + + + + + 上传文件时掉用 + + 文件名,带后缀,不带任何的路径 + 文件的大小 + 文件映射名称 + 文件的拥有者 + 文件的额外描述 + + + + + 删除一个文件信息 + + + + + + + 缓存JSON文本的方法,该机制使用乐观并发模型完成 + + + + + 从目录进行加载数据,必须实例化的时候加载,加载失败会导致系统异常,旧的文件丢失 + + + + + + 单个文件的存储 + + + + + 文件的名称 + + + + + 文件的大小 + + + + + 文件的映射名称 + + + + + 文件的下载次数 + + + + + 文件的上传时间 + + + + + 文件的上传人,拥有者 + + + + + 文件的额外描述 + + + + + 获取大小 + + + 文件标记对象类 @@ -4498,7 +4223,7 @@ - 新增一个文件的操作,可能用于更新文件,新增文件,删除文件 + 新增一个文件的操作,仅仅是删除文件 @@ -5083,21 +4808,16 @@ 重写当前线程的 CurrentUICulture 属性。 - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - 查找 System.Drawing.Bitmap 类型的本地化资源。 + + + 查找 System.Drawing.Bitmap 类型的本地化资源。 + + 查找 System.Drawing.Bitmap 类型的本地化资源。 @@ -5108,37 +4828,12 @@ 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - + 查找 System.Drawing.Bitmap 类型的本地化资源。 @@ -5148,56 +4843,11 @@ 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - 查找 System.Drawing.Bitmap 类型的本地化资源。 @@ -5213,91 +4863,26 @@ 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - 查找 System.Drawing.Bitmap 类型的本地化资源。 @@ -5308,31 +4893,6 @@ 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - 查找 System.Drawing.Bitmap 类型的本地化资源。 @@ -5343,66 +4903,6 @@ 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - 查找 System.Drawing.Bitmap 类型的本地化资源。 @@ -5413,236 +4913,36 @@ 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - 查找 System.Drawing.Bitmap 类型的本地化资源。 @@ -5658,46 +4958,16 @@ 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - 查找 System.Drawing.Bitmap 类型的本地化资源。 @@ -5708,46 +4978,11 @@ 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - 查找 System.Drawing.Bitmap 类型的本地化资源。 @@ -5758,41 +4993,6 @@ 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - 加密方法,只对当前的程序集开放 diff --git a/软件系统客户端Wpf/MainWindow.xaml.cs b/软件系统客户端Wpf/MainWindow.xaml.cs index 840b89e..15f38ac 100644 --- a/软件系统客户端Wpf/MainWindow.xaml.cs +++ b/软件系统客户端Wpf/MainWindow.xaml.cs @@ -60,11 +60,14 @@ namespace 软件系统客户端Wpf /// public partial class MainWindow : Window { + #region Constructor + public MainWindow() { InitializeComponent(); } + #endregion #region 窗口相关方法 /// @@ -185,8 +188,7 @@ namespace 软件系统客户端Wpf } #endregion - - + #region 菜单逻辑块 @@ -384,8 +386,7 @@ namespace 软件系统客户端Wpf } #endregion - - + #region 异步网络块 private NetComplexClient net_socket_client = new NetComplexClient(); @@ -519,8 +520,7 @@ namespace 软件系统客户端Wpf #endregion - - + #region 后台计数线程 /********************************************************************************************* @@ -707,7 +707,7 @@ namespace 软件系统客户端Wpf UIControl_Palette = new UserPaletteSelector() { DataContext = new PaletteSelectorViewModel() }; all_main_render.Add(UIControl_Palette); - UIControl_Files = new UserFileRender(); + UIControl_Files = new UserFileRender("ShareFiles", "", ""); all_main_render.Add(UIControl_Files); } @@ -760,6 +760,13 @@ namespace 软件系统客户端Wpf + /********************************************************************************************** + * + * 说明: 以下的两个方法是针对主界面左侧的按钮,用于测试 + * + **********************************************************************************************/ + + private void Button_BackMain_Click(object sender, RoutedEventArgs e) { //点击了主页 diff --git a/软件系统客户端Wpf/Views/UserFileRender.xaml b/软件系统客户端Wpf/Views/UserFileRender.xaml index 574bba8..5db579c 100644 --- a/软件系统客户端Wpf/Views/UserFileRender.xaml +++ b/软件系统客户端Wpf/Views/UserFileRender.xaml @@ -5,7 +5,7 @@ xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:local="clr-namespace:软件系统客户端Wpf.Views" mc:Ignorable="d" - d:DesignHeight="400" d:DesignWidth="800"> + d:DesignHeight="400" d:DesignWidth="800" Loaded="UserControl_Loaded"> @@ -31,7 +31,7 @@ 搜索: - + diff --git a/软件系统客户端Wpf/Views/UserFileRender.xaml.cs b/软件系统客户端Wpf/Views/UserFileRender.xaml.cs index 0307e00..0b48372 100644 --- a/软件系统客户端Wpf/Views/UserFileRender.xaml.cs +++ b/软件系统客户端Wpf/Views/UserFileRender.xaml.cs @@ -1,4 +1,5 @@ using ClientsLibrary; +using ClientsLibrary.FileSupport; using CommonLibrary; using HslCommunication; using HslCommunication.Enthernet; @@ -25,55 +26,28 @@ namespace 软件系统客户端Wpf.Views /// public partial class UserFileRender : UserControl { - public UserFileRender() + #region Constructor + + + public UserFileRender(string factory, string group, string id) { InitializeComponent(); + + m_Factory = factory; + m_Group = group; + m_Id = id; } - private void FileSearchFilter_TextChanged(object sender, TextChangedEventArgs e) - { - //搜索时触发的数据 - if (!string.IsNullOrEmpty(FileSearchFilter.Text)) - { - string pattern = FileSearchFilter.Text; - SetFilesShow(Cache_Files.Where(f => - f.FileName.Contains(pattern) || - f.FileNote.Contains(pattern) || - f.UploadName.Contains(pattern)).ToList()); - } - else - { - SetFilesShow(Cache_Files); - } - } - - private void Button_FileUpload_Click(object sender, RoutedEventArgs e) - { - //上传数据,先对权限进行验证 - if (UserClient.UserAccount.Grade < AccountGrade.Technology) - { - MessageBox.Show("权限不够!"); - return; - } - - using (FormSimplyFileUpload upload = new FormSimplyFileUpload( - CommonLibrary.CommonProtocol.KeyToken, - UserClient.LogNet, - UserClient.ServerIp, - CommonLibrary.CommonProtocol.Port_Share_File, - UserClient.UserAccount.UserName)) - { - upload.ShowDialog(); - } - } + #endregion + + #region Render File List private void Button_FileRefresh_Click(object sender, RoutedEventArgs e) { - //向服务器请求数据 - OperateResultString result = UserClient.Net_simplify_client.ReadFromServer(CommonLibrary.CommonHeadCode.SimplifyHeadCode.请求文件); + OperateResult result = UserClient.Net_File_Client.DownloadPathFileNames(out GroupFileItem[] files, "ShareFiles", "", ""); if (result.IsSuccess) { - Cache_Files = JArray.Parse(result.Content).ToObject>(); + Cache_Files = new List(files); SetFilesShow(Cache_Files); } else @@ -97,7 +71,7 @@ namespace 软件系统客户端Wpf.Views //} } - private void SetFilesShow(List files) + private void SetFilesShow(List files) { //清楚缓存 ClearControls(); @@ -106,21 +80,118 @@ namespace 软件系统客户端Wpf.Views //添加子控件 foreach (var m in files) { - UserFileRenderItem item = new UserFileRenderItem(); + UserFileRenderItem item = new UserFileRenderItem( + UserClient.Net_File_Client, + m_Factory, + m_Group, + m_Id, + DeleteCheck); FileListControl.Children.Add(item); - item.SetFile(m); + item.SetFile(m, () => m.Owner == UserClient.UserAccount.UserName); } } } + #endregion + + #region Delete Check + + private bool DeleteCheck(GroupFileItem item) + { + if (item.Owner != UserClient.UserAccount.UserName) + { + MessageBox.Show("无法删除不是自己上传的文件。"); + return false; + } + else + { + return MessageBox.Show("请确认是否真的删除?", "删除确认",MessageBoxButton.YesNo) == MessageBoxResult.Yes; + } + } + + #endregion + + #region Filter Support + + + private void FileSearchFilter_TextChanged(object sender, TextChangedEventArgs e) + { + + } + + private void FileSearchFilter_PreviewKeyDown(object sender, KeyEventArgs e) + { + if(e.Key == Key.Enter) + { + //搜索时触发的数据 + if (!string.IsNullOrEmpty(FileSearchFilter.Text)) + { + string pattern = FileSearchFilter.Text; + SetFilesShow(Cache_Files.Where(f => + f.FileName.Contains(pattern) || + f.Description.Contains(pattern) || + f.Owner.Contains(pattern)).ToList()); + } + else + { + SetFilesShow(Cache_Files); + } + + e.Handled = true; + } + } + + + #endregion + + #region File Upload + + + private void Button_FileUpload_Click(object sender, RoutedEventArgs e) + { + //上传数据,先对权限进行验证 + if (UserClient.UserAccount.Grade < AccountGrade.Technology) + { + MessageBox.Show("权限不够!"); + return; + } + + using (FormSimplyFileUpload upload = new FormSimplyFileUpload( + m_Factory, + m_Group, + m_Id + )) + { + upload.ShowDialog(); + } + } + + #endregion + + #region Private Members + /// /// 所有文件信息的缓存,以支持直接的搜索 /// - private List Cache_Files { get; set; } = new List(); + private List Cache_Files { get; set; } = new List(); /// /// 文件控件的缓存列表,方便清除垃圾 /// private Stack FilesControls = new Stack(); + private string m_Factory; // 文件的第一大类 + private string m_Group; // 文件的第二大类 + private string m_Id; // 文件的第三大类 + + #endregion + + #region Control Load + + private void UserControl_Loaded(object sender, RoutedEventArgs e) + { + UpdateFiles(); + } + + #endregion } } diff --git a/软件系统客户端Wpf/Views/UserFileRenderItem.xaml.cs b/软件系统客户端Wpf/Views/UserFileRenderItem.xaml.cs index 8bd0901..bfa8318 100644 --- a/软件系统客户端Wpf/Views/UserFileRenderItem.xaml.cs +++ b/软件系统客户端Wpf/Views/UserFileRenderItem.xaml.cs @@ -18,6 +18,7 @@ using HslCommunication; using System.Threading; using System.IO; using System.Net; +using ClientsLibrary.FileSupport; namespace 软件系统客户端Wpf.Views { @@ -26,23 +27,31 @@ namespace 软件系统客户端Wpf.Views /// public partial class UserFileRenderItem : UserControl { - public UserFileRenderItem() + #region Constructor + + + public UserFileRenderItem(IntegrationFileClient client, string factory, string group, string id, Func deleteCheck) { InitializeComponent(); - fileClient = new SimpleFileClient() - { - KeyToken = CommonLibrary.CommonProtocol.KeyToken, - LogNet = UserClient.LogNet, - ServerIpEndPoint =new IPEndPoint(IPAddress.Parse(UserClient.ServerIp),CommonLibrary.CommonProtocol.Port_Share_File) - }; + DeleteCheck = deleteCheck; + m_Factory = factory; + m_Group = group; + m_Id = id; + fileClient = client; } + + #endregion + + #region Private Method + + private BitmapImage BitmapToBitmapImage(System.Drawing.Bitmap bitmap) { BitmapImage bitmapImage = new BitmapImage(); - using (System.IO.MemoryStream ms = new System.IO.MemoryStream()) + using (MemoryStream ms = new MemoryStream()) { bitmap.Save(ms, bitmap.RawFormat); bitmapImage.BeginInit(); @@ -55,50 +64,67 @@ namespace 软件系统客户端Wpf.Views return bitmapImage; } - private HslSoftFile Hufile { get; set; } = null; + #endregion + + #region Render File Information + /// /// 设置文件数据 /// /// 文件的信息对象 /// 删除控件的使能委托 - public void SetFile(HslSoftFile file) + /// file参数不能为空 + public void SetFile(GroupFileItem file, Func deleteEnable) { - Hufile = file; - //获取后缀名 - int dotIndex = Hufile.FileName.LastIndexOf('.'); - if (dotIndex >= 0) - { - FileIcon.Source = BitmapToBitmapImage(Hufile.GetFileIcon()); - } + fileItem = file; + + + // 设置文件图标 + FileIcon.Source = BitmapToBitmapImage(FileSupport.GetFileIcon(file.FileName)); FileName.Text = "文件名称:" + file.FileName; FileSize.Text = "大小:" + file.GetTextFromFileSize(); - FileDate.Text = "日期:" + file.UploadDate.ToString("yyyy-MM-dd"); - FileDescription.Text = "文件备注:" + file.FileNote; - FilePeople.Text = "上传人:" + file.UploadName; - FileDownloadTimes.Text = "下载数:" + file.FileDownloadTimes; - + FileDate.Text = "日期:" + file.UploadTime.ToString("yyyy-MM-dd"); + FileDescription.Text = "文件备注:" + file.Description; + FilePeople.Text = "上传人:" + file.Owner; + FileDownloadTimes.Text = "下载数:" + file.DownloadTimes; - FileDeleteButton.IsEnabled = file.UploadName == UserClient.UserAccount.UserName; - FileDownloadButton.IsEnabled = true; + + FileDeleteButton.IsEnabled = deleteEnable.Invoke(); + FileDownloadButton.IsEnabled = true; // 一般都是允许下载,如果不允许下载,在此处设置 } + + #endregion + + #region Delete Support + private void FileDeleteButton_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { - //删除文件 - if (Hufile.UploadName != UserClient.UserAccount.UserName) + // 删除文件 + if (DeleteCheck != null) { - MessageBox.Show("无法删除不是自己上传的文件。"); - return; + // 删除的权限检查 + if (!DeleteCheck.Invoke(fileItem)) + { + // 没有通过 + return; + } } + if (MessageBox.Show("请确认是否真的删除?", "删除确认", MessageBoxButton.YesNo) == MessageBoxResult.No) { return; } //确认删除 - OperateResult result = fileClient.DeleteFile(Hufile.FileName); - if(result.IsSuccess) + OperateResult result = fileClient.DeleteFile( + fileItem.FileName, // 文件的名称 + m_Factory, // 第一大类 + m_Group, // 第二大类 + m_Id // 第三大类 + ); + if (result.IsSuccess) { MessageBox.Show("删除成功!"); } @@ -108,6 +134,11 @@ namespace 软件系统客户端Wpf.Views } } + #endregion + + #region Download Support + + private void FileDownloadButton_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { //下载文件 @@ -125,11 +156,14 @@ namespace 软件系统客户端Wpf.Views Directory.CreateDirectory(save_file_name); } - save_file_name += "\\" + Hufile.FileName; + save_file_name += "\\" + fileItem.FileName; OperateResult result = fileClient.DownloadFile( - Hufile.FileName, + fileItem.FileName, + m_Factory, + m_Group, + m_Id, (m, n) => { Dispatcher.Invoke(new Action(() => @@ -159,7 +193,17 @@ namespace 软件系统客户端Wpf.Views } + #endregion + + #region Private Members - SimpleFileClient fileClient; + private IntegrationFileClient fileClient; // 进行文件操作的客户端 + private Func DeleteCheck; // 删除操作时的检查方法 + private GroupFileItem fileItem; // 本控件关联显示的文件 + private string m_Factory; // 文件的第一大类 + private string m_Group; // 文件的第二大类 + private string m_Id; // 文件的第三大类 + + #endregion } } diff --git a/软件系统客户端Wpf/软件系统客户端Wpf.csproj b/软件系统客户端Wpf/软件系统客户端Wpf.csproj index c6347f6..f7949e9 100644 --- a/软件系统客户端Wpf/软件系统客户端Wpf.csproj +++ b/软件系统客户端Wpf/软件系统客户端Wpf.csproj @@ -33,7 +33,8 @@ 4 - + + False ..\ClientsLibrary\bin\Debug\ClientsLibrary.dll diff --git a/软件系统客户端模版/FormMainWindow.cs b/软件系统客户端模版/FormMainWindow.cs index ba53a98..1bff6f2 100644 --- a/软件系统客户端模版/FormMainWindow.cs +++ b/软件系统客户端模版/FormMainWindow.cs @@ -44,12 +44,18 @@ namespace 软件系统客户端模版 { public partial class FormMainWindow : Form { + #region Constructor + public FormMainWindow() { InitializeComponent(); + + Icon = UserClient.GetFormWindowIcon(); } - #region 窗口的属性和方法 + #endregion + + #region Load Show Close /// /// 指示窗口是否显示的标志 /// @@ -57,8 +63,8 @@ namespace 软件系统客户端模版 private void FormMainWindow_Load(object sender, EventArgs e) { - //udp测试 - //SendServerUdpData(0, "载入了窗体"); + // udp测试 + // SendServerUdpData(0, "载入了窗体"); //窗口载入 label_userName.Text = UserClient.UserAccount.UserName; @@ -69,24 +75,24 @@ namespace 软件系统客户端模版 label_times.Text = UserClient.UserAccount.LoginFrequency.ToString(); label_address.Text = UserClient.UserAccount.LastLoginIpAddress; - //状态栏设置 + // 状态栏设置 toolStripStatusLabel_time.Alignment = ToolStripItemAlignment.Right; statusStrip1.LayoutStyle = ToolStripLayoutStyle.StackWithOverflow; toolStripStatusLabel1.Text = $"本软件著作权归{SoftResources.StringResouce.SoftCopyRight}所有"; - //绑定事件,仅执行一次,不能放到show方法里 + // 绑定事件,仅执行一次,不能放到show方法里 net_socket_client.MessageAlerts += Net_socket_client_MessageAlerts; net_socket_client.LoginFailed += Net_socket_client_LoginFailed; net_socket_client.LoginSuccess += Net_socket_client_LoginSuccess; net_socket_client.AcceptByte += Net_socket_client_AcceptByte; net_socket_client.AcceptString += Net_socket_client_AcceptString; - //启动网络服务 + // 启动网络服务 Net_Socket_Client_Initialization(); - //启动头像 + // 启动头像 SoftUserPortraitInitialization(); - + // 显示公告 label_Announcement.Text = UserClient.Announcement; - + // 显示版本 toolStripStatusLabel_Version.Text = UserClient.CurrentVersion.ToString(); //初始化窗口 @@ -94,13 +100,13 @@ namespace 软件系统客户端模版 } private void FormMainWindow_Shown(object sender, EventArgs e) { - //窗口显示 + // 窗口显示 IsWindowShow = true; - //udp测试 - //SendServerUdpData(0, "显示了窗体"); + // udp测试 + // SendServerUdpData(0, "显示了窗体"); - //是否显示更新日志,显示前进行判断该版本是否已经显示过了 + // 是否显示更新日志,显示前进行判断该版本是否已经显示过了 if (UserClient.JsonSettings.IsNewVersionRunning) { UserClient.JsonSettings.IsNewVersionRunning = false; @@ -108,7 +114,7 @@ namespace 软件系统客户端模版 更新日志ToolStripMenuItem_Click(null, new EventArgs()); } - //根据权限使能菜单 + // 根据权限使能菜单 if (UserClient.UserAccount.Grade < AccountGrade.SuperAdministrator) { 日志查看ToolStripMenuItem.Enabled = false; @@ -119,19 +125,19 @@ namespace 软件系统客户端模版 开发中心ToolStripMenuItem.Enabled = false; 系统配置ToolStripMenuItem.Enabled = false; } - //启动定时器 + // 启动定时器 TimeTickInitilization(); - //显示头像 + // 显示头像 SoftUserPortrait.LoadUserSmallPortraint(); } private void FormMainWindow_FormClosing(object sender, FormClosingEventArgs e) { - //窗口关闭 + // 窗口关闭 IsWindowShow = false; - //通知服务器退出网络服务 + // 通知服务器退出网络服务 net_socket_client.ClientClose(); - //等待一秒退出 + // 等待一秒退出 using (FormWaitInfomation fwm = new FormWaitInfomation("正在退出程序...", 1000)) { fwm.ShowDialog(); @@ -141,7 +147,7 @@ namespace 软件系统客户端模版 #endregion - #region 菜单逻辑块 + #region Menu Click Event private void 修改密码ToolStripMenuItem_Click(object sender, EventArgs e) { @@ -172,7 +178,7 @@ namespace 软件系统客户端模版 private void 更新日志ToolStripMenuItem_Click(object sender, EventArgs e) { - //更新情况复位 + // 更新情况复位 if (UserClient.JsonSettings.IsNewVersionRunning) { UserClient.JsonSettings.IsNewVersionRunning = false; @@ -337,11 +343,11 @@ namespace 软件系统客户端模版 { try { - net_socket_client.KeyToken = CommonLibrary.CommonProtocol.KeyToken;// 新增的身份令牌 + net_socket_client.KeyToken = CommonProtocol.KeyToken;// 新增的身份令牌 net_socket_client.LogNet = UserClient.LogNet; net_socket_client.EndPointServer = new System.Net.IPEndPoint( System.Net.IPAddress.Parse(UserClient.ServerIp), - CommonLibrary.CommonProtocol.Port_Main_Net); + CommonProtocol.Port_Main_Net); net_socket_client.ClientAlias = $"{UserClient.UserAccount.UserName} ({UserClient.UserAccount.Factory})";//标记客户端在线的名称 net_socket_client.ClientStart(); } @@ -350,6 +356,7 @@ namespace 软件系统客户端模版 SoftBasic.ShowExceptionMessage(ex); } } + /// /// 接收到服务器的字节数据的回调方法 /// @@ -401,7 +408,7 @@ namespace 软件系统客户端模版 chats.ForEach(m => { sb.Append(m + Environment.NewLine); }); if (IsHandleCreated) Invoke(new Action(() => { - toolStripStatusLabel_time.Text = UserClient.DateTimeServer.ToString("yyyy-MM-dd HH:mm"); + toolStripStatusLabel_time.Text = UserClient.DateTimeServer.ToString("yyyy-MM-dd HH:mm:ss"); label_file_count.Text = json["FileCount"].ToObject().ToString(); UIControls_Chat.AddChatsHistory(sb.ToString()); })); @@ -424,7 +431,7 @@ namespace 软件系统客户端模版 private void Net_socket_client_AcceptByte(AsyncStateOne object1, NetHandle customer, byte[] object2) { - //接收到服务器发来的字节数据 + // 接收到服务器发来的字节数据 if (IsHandleCreated) Invoke(new Action(() => { MessageBox.Show(customer.ToString()); @@ -433,7 +440,7 @@ namespace 软件系统客户端模版 private void Net_socket_client_LoginSuccess() { - //登录成功,或重新登录成功的事件,有些数据的初始化可以放在此处 + // 登录成功,或重新登录成功的事件,有些数据的初始化可以放在此处 if (IsHandleCreated) Invoke(new Action(() => { toolStripStatusLabel_status.Text = "客户端启动成功"; @@ -442,7 +449,7 @@ namespace 软件系统客户端模版 private void Net_socket_client_LoginFailed(int object1) { - //登录失败的情况,如果连续三次连接失败,请考虑退出系统 + // 登录失败的情况,如果连续三次连接失败,请考虑退出系统 if (object1 > 3) { if (IsHandleCreated) Invoke(new Action(() => @@ -454,7 +461,7 @@ namespace 软件系统客户端模版 private void Net_socket_client_MessageAlerts(string object1) { - //信息提示 + // 信息提示 if (IsHandleCreated) Invoke(new Action(() => { toolStripStatusLabel_status.Text = object1; @@ -504,7 +511,7 @@ namespace 软件系统客户端模版 * *******************************************************************************/ - UIControls_Files = new UIControls.ShareFilesRender() + UIControls_Files = new UIControls.ShareFilesRender("ShareFiles", "", "") { Visible = false, Parent = panel_main,//决定了放在哪个界面显示,此处示例 @@ -522,7 +529,6 @@ namespace 软件系统客户端模版 Dock = DockStyle.Fill, }; all_main_render.Add(UIControls_Chat); - } private void SetShowRenderControl(UserControl control) @@ -570,7 +576,7 @@ namespace 软件系统客户端模版 /// 实际数据 private void SendServerUdpData(NetHandle customer, string data) { - //测试发送udp消息 + // 测试发送udp消息 UserClient.Net_Udp_Client.SendMessage(customer, data); } @@ -618,27 +624,30 @@ namespace 软件系统客户端模版 } second = DateTime.Now.Second; if (IsWindowShow && IsHandleCreated) Invoke(DTimeShow); - //每秒钟执行的代码 + // 每秒钟执行的代码 UserClient.DateTimeServer = net_socket_client.ServerTime; if (second == 0) { - //每个0秒执行的代码 + // 每个0秒执行的代码 } + if (minute != DateTime.Now.Minute) { minute = DateTime.Now.Minute; - //每分钟执行的代码 + // 每分钟执行的代码 } + if (hour != DateTime.Now.Hour) { hour = DateTime.Now.Hour; - //每小时执行的代码 + // 每小时执行的代码 } + if (day != DateTime.Now.Day) { day = DateTime.Now.Day; - //每天执行的代码 + // 每天执行的代码 } } } diff --git a/软件系统客户端模版/UIControls/ShareFilesRender.Designer.cs b/软件系统客户端模版/UIControls/ShareFilesRender.Designer.cs index b9e1b4f..f5e79b7 100644 --- a/软件系统客户端模版/UIControls/ShareFilesRender.Designer.cs +++ b/软件系统客户端模版/UIControls/ShareFilesRender.Designer.cs @@ -33,8 +33,8 @@ namespace 软件系统客户端模版.UIControls this.panel1 = new System.Windows.Forms.Panel(); this.textBox1 = new System.Windows.Forms.TextBox(); this.label1 = new System.Windows.Forms.Label(); - this.userButton_refresh = new UserButton(); - this.userButton_upload = new UserButton(); + this.userButton_refresh = new HslCommunication.Controls.UserButton(); + this.userButton_upload = new HslCommunication.Controls.UserButton(); this.panel2 = new System.Windows.Forms.Panel(); this.panel1.SuspendLayout(); this.SuspendLayout(); @@ -63,6 +63,7 @@ namespace 软件系统客户端模版.UIControls this.textBox1.Size = new System.Drawing.Size(187, 23); this.textBox1.TabIndex = 9; this.textBox1.TextChanged += new System.EventHandler(this.textBox1_TextChanged); + this.textBox1.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBox1_KeyDown); // // label1 // diff --git a/软件系统客户端模版/UIControls/ShareFilesRender.cs b/软件系统客户端模版/UIControls/ShareFilesRender.cs index 7d4fb04..105532e 100644 --- a/软件系统客户端模版/UIControls/ShareFilesRender.cs +++ b/软件系统客户端模版/UIControls/ShareFilesRender.cs @@ -11,21 +11,41 @@ using HslCommunication.Enthernet; using HslCommunication; using CommonLibrary; using ClientsLibrary; +using ClientsLibrary.FileSupport; namespace 软件系统客户端模版.UIControls { public partial class ShareFilesRender : UserControl { - public ShareFilesRender() + #region Constructor + + public ShareFilesRender(string factory, string group, string id) { InitializeComponent(); + m_Factory = factory; + m_Group = group; + m_Id = id; + DoubleBuffered = true; } + #endregion + + #region Load Show + + private void ShareFilesRender_Load(object sender, EventArgs e) + { + // 选择是否禁用上传键 + } + + #endregion + + #region Upload File + private void userButton_upload_Click(object sender, EventArgs e) { - //上传数据 + // 上传数据 if(UserClient.UserAccount.Grade 0) + { + FilesControls.Pop().Dispose(); + } + } + + public void UpdateFiles() + { + userButton_refresh.PerformClick(); + } + private void userButton_refresh_Click(object sender, EventArgs e) { - //向服务器请求数据 - OperateResultString result = UserClient.Net_simplify_client.ReadFromServer(CommonLibrary.CommonHeadCode.SimplifyHeadCode.请求文件); + OperateResult result = UserClient.Net_File_Client.DownloadPathFileNames(out GroupFileItem[] files, "ShareFiles", "", ""); if(result.IsSuccess) { - Cache_Files = JArray.Parse(result.Content).ToObject>(); + Cache_Files = new List(files); SetFilesShow(Cache_Files); } else @@ -59,7 +95,7 @@ namespace 软件系统客户端模版.UIControls } } - private void SetFilesShow(List files) + private void SetFilesShow(List files) { panel2.SuspendLayout(); //清楚缓存 @@ -71,83 +107,103 @@ namespace 软件系统客户端模版.UIControls foreach(var m in files) { FileItemShow item = new FileItemShow( - CommonLibrary.CommonProtocol.KeyToken, - UserClient.LogNet, UserClient.ServerIp, - CommonLibrary.CommonProtocol.Port_Share_File, - () => - { - if (m.UploadName != UserClient.UserAccount.UserName) - { - MessageBox.Show("无法删除不是自己上传的文件。"); - return false; - } - else - { - return MessageBox.Show("请确认是否真的删除?", "删除确认", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes; - } - }); - panel2.Controls.Add(item); // 添加显示 - item.BackColor = Color.White; // 白色的背景 - item.BorderStyle = BorderStyle.FixedSingle; // 边框样式 - item.SetFile(m, () => m.UploadName == UserClient.UserAccount.UserName); // 设置文件显示并提供一个删除使能的权限,此处设置是登录名和上传人不一致时,删除键不能点击 + UserClient.Net_File_Client, // 文件传送客户端 + m_Factory, // 文件第一大类 + m_Group, // 文件第二大类 + m_Id, // 文件第三大类 + DeleteCheck // 删除键是否激活方法 + ); + panel2.Controls.Add(item); // 添加显示 + item.BackColor = Color.White; // 白色的背景 + item.BorderStyle = BorderStyle.FixedSingle; // 边框样式 + item.SetFile(m, () => m.Owner == UserClient.UserAccount.UserName); // 设置文件显示并提供一个删除使能的权限,此处设置是登录名和上传人不一致时,删除键不能点击 item.Location = new Point(2, location_y); // 控件的位置 int width = panel2.VerticalScroll.Visible ? panel2.Width - 4 - SystemInformation.VerticalScrollBarWidth : panel2.Width - 4; // 控件的宽度 - item.Size = new Size(width, item.Size.Height); // 控件的大小 - item.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;// 控件随窗口变化的样式 + item.Size = new Size(width, item.Size.Height); // 控件的大小 + item.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right; // 控件随窗口变化的样式 - location_y += item.Height + 4; // 位置偏移 - FilesControls.Push(item);// 控件压入堆栈 + location_y += item.Height + 4; // 位置偏移 + FilesControls.Push(item); // 控件压入堆栈 } } panel2.ResumeLayout(); } - public void UpdateFiles() - { - userButton_refresh.PerformClick(); - } - private void ClearControls() + #endregion + + #region Delete Check + + + private bool DeleteCheck(GroupFileItem item) { - while (FilesControls.Count > 0) + if (item.Owner != UserClient.UserAccount.UserName) { - FilesControls.Pop().Dispose(); + MessageBox.Show("无法删除不是自己上传的文件。"); + return false; + } + else + { + return MessageBox.Show("请确认是否真的删除?", "删除确认", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes; } } + #endregion + + #region Filter Support + + /************************************************************************************************** + * + * 说明: 此处实现的功能是更改了输入框文本后,按了Enter键就开始执行筛选 + * + **************************************************************************************************/ + + + private void textBox1_TextChanged(object sender, EventArgs e) + { + + } + + private void textBox1_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Enter) + { + // 搜索时触发的数据 + if (!string.IsNullOrEmpty(textBox1.Text)) + { + string pattern = textBox1.Text; + SetFilesShow(Cache_Files.Where(f => + f.FileName.Contains(pattern) || + f.Description.Contains(pattern) || + f.Owner.Contains(pattern)).ToList()); + } + else + { + SetFilesShow(Cache_Files); + } + // 已处理过该值 + e.Handled = true; + } + } + + #endregion + + #region Private Members + /// /// 所有文件信息的缓存,以支持直接的搜索 /// - private List Cache_Files { get; set; } = new List(); + private List Cache_Files { get; set; } = new List(); /// /// 文件控件的缓存列表,方便清除垃圾 /// private Stack FilesControls = new Stack(); + private string m_Factory; // 文件的第一大类 + private string m_Group; // 文件的第二大类 + private string m_Id; // 文件的第三大类 - private void ShareFilesRender_Load(object sender, EventArgs e) - { - // 选择是否禁用上传键 - } - - private void textBox1_TextChanged(object sender, EventArgs e) - { - // 搜索时触发的数据 - if(!string.IsNullOrEmpty(textBox1.Text)) - { - string pattern = textBox1.Text; - SetFilesShow(Cache_Files.Where(f => - f.FileName.Contains(pattern) || - f.FileNote.Contains(pattern) || - f.UploadName.Contains(pattern)).ToList()); - } - else - { - SetFilesShow(Cache_Files); - } - } - - + #endregion } } diff --git a/软件系统客户端模版/软件系统客户端模版.csproj b/软件系统客户端模版/软件系统客户端模版.csproj index 9f09a5b..390c835 100644 --- a/软件系统客户端模版/软件系统客户端模版.csproj +++ b/软件系统客户端模版/软件系统客户端模版.csproj @@ -32,7 +32,8 @@ 4 - + + False ..\ClientsLibrary\bin\Debug\ClientsLibrary.dll diff --git a/软件系统服务端模版/FormServerWindow.cs b/软件系统服务端模版/FormServerWindow.cs index 26ed897..60c6dd2 100644 --- a/软件系统服务端模版/FormServerWindow.cs +++ b/软件系统服务端模版/FormServerWindow.cs @@ -16,19 +16,19 @@ using HslCommunication.LogNet; using HslCommunication; -/****************************************************************************************** +/******************************************************************************************** * - * 模版日期 2017-09-13 - * 创建人 Richard.Hu - * 版权所有 Richard.Hu - * 授权说明 模版仅授权个人使用,如需商用,请联系hsl200909@163.com洽谈 - * 说明 JSON组件引用自james newton-king,遵循MIT授权协议 - * 网络组件 网络组件的版权由Richard.Hu所有 + * 模版日期 2017-09-30 + * 创建人 Richard.Hu + * 版权所有 Richard.Hu + * 授权说明 模版仅授权个人研究学习使用,如需商用,请联系hsl200909@163.com洽谈 + * 说明 JSON组件引用自james newton-king,遵循MIT授权协议 + * 网络组件 网络组件的版权由Richard.Hu所有 * ********************************************************************************************/ -/****************************************************************************************** +/******************************************************************************************** * * 注意:本代码的相关操作未作密码验证,如有需要,请自行完成 * 示例:具体示例参照本页面Form1_FormClosing(object sender, FormClosingEventArgs e)方法 @@ -37,7 +37,7 @@ using HslCommunication; ********************************************************************************************/ -/****************************************************************************************** +/******************************************************************************************** * * 本项目模版不包含 《软件自动更新.exe》 * 如需支持部署环境的自动升级 请联系hsl200909@163.com获取 @@ -46,7 +46,7 @@ using HslCommunication; ********************************************************************************************/ -/****************************************************************************************** +/******************************************************************************************** * * 关于邮件系统:如果你服务器端的程序部署在可上网的计算机上时,可以使用 * 先进行邮件系统的初始化,指定接收邮件的地址 @@ -67,6 +67,7 @@ namespace 软件系统服务端模版 { InitializeComponent(); + //捕获所有未处理的异常并进行预处理 AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; @@ -80,7 +81,7 @@ namespace 软件系统服务端模版 #endregion - #region 窗口属性+窗口方法 + #region Load Show Close /// /// 指示窗口是否处于显示中 @@ -154,7 +155,8 @@ namespace 软件系统服务端模版 #endregion - #region 界面基础方法集 + #region UI Message Add + /// /// 初始化委托 /// @@ -186,8 +188,6 @@ namespace 软件系统服务端模版 } } - - /// /// 一个处理服务器未处理异常的方法,对该方法进行记录,方便以后的分析 /// @@ -205,7 +205,7 @@ namespace 软件系统服务端模版 #endregion - #region 菜单逻辑块 + #region Menu Click Event private void 启动服务器ToolStripMenuItem_Click(object sender, EventArgs e) { if (!IsSystemStart) @@ -213,7 +213,7 @@ namespace 软件系统服务端模版 Net_Simplify_Server_Initialization();//同步网络初始化 Net_Socket_Server_Initialization();//异步网络初始化 Net_SoftUpdate_Server_Initialization();//软件更新引擎初始化 - Simple_File_Initiaization();//共享文件引擎初始化 + Ultimate_File_Initiaization();//共享文件引擎初始化 Net_File_Portrait_Initialization();//头像文件管理服务 Net_Udp_Server_Initialization();//UDP引擎服务初始化 启动服务器ToolStripMenuItem.Text = "已启动"; @@ -334,6 +334,7 @@ namespace 软件系统服务端模版 #endregion #region 软件更新服务引擎 + /// /// 支持软件自动更新的后台服务引擎 /// @@ -345,9 +346,9 @@ namespace 软件系统服务端模版 net_soft_update_Server.LogNet = new LogNetSingle(LogSavePath + @"\update_log.txt"); //在服务器的这个路径下,放置客户端运行的所有文件,不要包含settings文件,不要从此处运行 //只放置exe和dll组件,必须放置:软件自动更新.exe - net_soft_update_Server.KeyToken = CommonLibrary.CommonProtocol.KeyToken; - net_soft_update_Server.FileUpdatePath = Application.StartupPath + @"\ClientFiles";//客户端文件路径 - net_soft_update_Server.ServerStart(CommonLibrary.CommonProtocol.Port_Update_Net); + net_soft_update_Server.KeyToken = CommonProtocol.KeyToken; + net_soft_update_Server.FileUpdatePath = Application.StartupPath + @"\ServerFiles\ClientFiles";//客户端文件路径 + net_soft_update_Server.ServerStart(CommonProtocol.Port_Update_Net); } catch (Exception ex) { @@ -357,15 +358,12 @@ namespace 软件系统服务端模版 #endregion - #region 高级文件引擎管理块,多功能 - - + #region 多文件服务器块 + /************************************************************************************** * - * 本文件管理器引擎目前主要实现3个大功能 + * 本文件管理器引擎目前主要实现1个功能 * 1. 允许客户端上传服务器的客户端文件,用来提供软件自动更新使用的 - * 2. 用于管理客户端的头像文件存储服务 - * 3. 用于管理每个账户的私有文件存储服务 * **************************************************************************************/ @@ -382,11 +380,11 @@ namespace 软件系统服务端模版 { try { - net_file_Advanced.FilesDirectoryPath = Application.StartupPath; - net_file_Advanced.FilesDirectoryPathTemp = Application.StartupPath + @"\Temp"; + net_file_Advanced.FilesDirectoryPath = Application.StartupPath + @"\ServerFiles"; + net_file_Advanced.FilesDirectoryPathTemp = Application.StartupPath + @"\ServerFiles\Temp"; net_file_Advanced.LogNet = new LogNetSingle(LogSavePath + @"\Advanced_file_log.txt"); - net_file_Advanced.KeyToken = CommonLibrary.CommonProtocol.KeyToken; - net_file_Advanced.ServerStart(CommonLibrary.CommonProtocol.Port_Advanced_File_Server); + net_file_Advanced.KeyToken = CommonProtocol.KeyToken; + net_file_Advanced.ServerStart(CommonProtocol.Port_Advanced_File_Server); } catch (Exception ex) { @@ -398,6 +396,7 @@ namespace 软件系统服务端模版 #endregion #region 同步数据传送引擎 + /// /// 用户同步数据传送的引擎 /// @@ -526,11 +525,26 @@ namespace 软件系统服务端模版 string name = SoftBasic.GetValueFromJsonObject(json, UserAccount.UserNameText, ""); string password = SoftBasic.GetValueFromJsonObject(json, UserAccount.PasswordText, ""); string way = SoftBasic.GetValueFromJsonObject(json, UserAccount.LoginWayText, "winform"); - string machineId= SoftBasic.GetValueFromJsonObject(json, UserAccount.DeviceUniqueID, "ABCDEFHIGKLMN"); - + string machineId = SoftBasic.GetValueFromJsonObject(json, UserAccount.DeviceUniqueID, "ABCDEFHIGKLMN"); + string frameworkVersion = SoftBasic.GetValueFromJsonObject(json, UserAccount.FrameworkVersion, "1.0.0"); - UserAccount account = UserServer.ServerAccounts.CheckAccount(name, password, state.GetRemoteEndPoint().Address.ToString(), way); - //检测是否重复登录 + + UserAccount account = UserServer.ServerAccounts.CheckAccount(name, password, state.GetRemoteEndPoint().Address.ToString(), way); + + + // 先判定框架版本是否正确 + if (!UserServer.ServerSettings.AllowLoginWhenFramewordVersionNotCheck) + { + SystemVersion sv = new SystemVersion(frameworkVersion); + if (sv != SoftBasic.FrameworkVersion) + { + account.LoginEnable = false; + account.ForbidMessage = "框架版本检测失败,请更新"; + RuntimeLogHelper?.WriteWarn("框架版本验证失败,version:" + frameworkVersion); + } + } + + // 检测是否重复登录 if (account.LoginEnable) { if (!UserServer.ServerSettings.AllowUserMultiOnline) @@ -606,7 +620,7 @@ namespace 软件系统服务端模版 } else if (handle == CommonHeadCode.SimplifyHeadCode.请求文件) { - net_simplify_server.SendMessage(state, handle, net_simple_file_server.ToJsonString()); + net_simplify_server.SendMessage(state, handle, ShareFileContainer.JsonArrayContent); } else if (handle == CommonHeadCode.SimplifyHeadCode.意见反馈) { @@ -682,6 +696,7 @@ namespace 软件系统服务端模版 JObject json = new JObject { { "AllowUserMulti", new JValue(UserServer.ServerSettings.AllowUserMultiOnline) }, + { "AllowFrameLogin", new JValue(UserServer.ServerSettings.AllowLoginWhenFramewordVersionNotCheck) }, }; net_simplify_server.SendMessage(state, handle, json.ToString()); } @@ -689,6 +704,7 @@ namespace 软件系统服务端模版 { JObject json = JObject.Parse(data); UserServer.ServerSettings.AllowUserMultiOnline = SoftBasic.GetValueFromJsonObject(json, "AllowUserMulti", false); + UserServer.ServerSettings.AllowLoginWhenFramewordVersionNotCheck = SoftBasic.GetValueFromJsonObject(json, "AllowFrameLogin", false); net_simplify_server.SendMessage(state, handle, json.ToString()); } else @@ -772,13 +788,13 @@ namespace 软件系统服务端模版 } else if (handle == CommonHeadCode.SimplifyHeadCode.文件日志查看) { - LogNetSingle logNet = (LogNetSingle)net_simple_file_server.LogNet; + LogNetSingle logNet = (LogNetSingle)net_ultimate_file_server.LogNet; net_simplify_server.SendMessage(state, handle, logNet.GetAllSavedLog()); RuntimeLogHelper.WriteInfo("共享文件日志查看"); } else if (handle == CommonHeadCode.SimplifyHeadCode.文件日志清空) { - if (net_simple_file_server.LogNet is LogNetSingle logNet) + if (net_ultimate_file_server.LogNet is LogNetSingle logNet) { logNet.ClearLog(); } @@ -866,12 +882,20 @@ namespace 软件系统服务端模版 { } - + #endregion #endregion #region 异步数据传送引擎 + + /****************************************************************************************************************** + * + * 说明: 异步网络主要显示的功能是对所有在线客户端的管理能力,并允许群发所有在线客户端消息 + * 注意: 如果客户端需要向服务器请求数据并明确的需要返回消息,则必须选择同步网络通信 + * + ******************************************************************************************************************/ + /// /// 异步客户端管理引擎,维护所有的客户端在线情况,支持主动发数据到所有的客户端 /// @@ -901,9 +925,7 @@ namespace 软件系统服务端模版 SoftBasic.ShowExceptionMessage(ex); } } - - - + /****************************************************************************************************************** * @@ -961,16 +983,16 @@ namespace 软件系统服务端模版 private void Net_socket_server_ClientOnline(AsyncStateOne object1) { - //上线后回发一条数据初始化信息 + // 上线后回发一条数据初始化信息 JObject json = new JObject { { "Time", new JValue(DateTime.Now) }, - { "FileCount", new JValue(net_simple_file_server.File_Count()) }, + { "FileCount", new JValue(ShareFileContainer.FileCount) }, { "chats", new JValue(Chats_Managment.ToSaveString())} }; - //发送客户端的初始化数据 + // 发送客户端的初始化数据 net_socket_server.Send(object1, CommonHeadCode.MultiNetHeadCode.初始化数据, json.ToString()); - //触发上下线功能 + // 触发上下线功能 UserInterfaceMessageRender(DateTime.Now.ToString("MM-dd HH:mm:ss ") + object1._IpEnd_Point.Address.ToString() + ":" + object1.LoginAlias + " 上线"); } @@ -978,7 +1000,7 @@ namespace 软件系统服务端模版 private void Net_socket_server_AllClientsStatusChange(string data) { - //此处决定要不要将在线客户端的数据发送所有客户端 + // 此处决定要不要将在线客户端的数据发送所有客户端 net_socket_server.SendAllClients(CommonHeadCode.MultiNetHeadCode.总在线信息, data); Net_Socket_All_Clients = data; if (IsWindowShow && IsHandleCreated) @@ -992,7 +1014,7 @@ namespace 软件系统服务端模版 } /// - /// 所有在线客户端的信息 + /// 所有在线客户端的信息,此处做了一个缓存 /// private string Net_Socket_All_Clients = string.Empty; @@ -1086,27 +1108,27 @@ namespace 软件系统服务端模版 } second = DateTime.Now.Second; if (IsWindowShow && IsHandleCreated) Invoke(DTimeShow); - //每秒钟执行的代码 + // 每秒钟执行的代码 if (second == 0) { - //每个0秒执行的代码 - //net_socket_server.SendAllClients(CommonHeadCode.MultiNetHeadCode.时间的推送, DateTime.Now.ToString("O")); + // 每个0秒执行的代码 + // net_socket_server.SendAllClients(CommonHeadCode.MultiNetHeadCode.时间的推送, DateTime.Now.ToString("O")); } if (minute != DateTime.Now.Minute) { minute = DateTime.Now.Minute; - //每分钟执行的代码 + // 每分钟执行的代码 } if (hour != DateTime.Now.Hour) { hour = DateTime.Now.Hour; - //每小时执行的代码 + // 每小时执行的代码 } if (day != DateTime.Now.Day) { day = DateTime.Now.Day; - //每天执行的代码 + // 每天执行的代码 } } } @@ -1131,32 +1153,39 @@ namespace 软件系统服务端模版 #endregion - #region 共享文件下载块 + #region Ultimate File Server + + + /************************************************************************************** + * + * 本文件管理器引擎目前主要实现3个大功能 + * 1. 用于管理客户端的头像文件存储服务 + * 2. 用于管理每个账户的私有文件存储服务 + * 3. 用于主界面的共享文件管理 + * + **************************************************************************************/ + /// - /// 共享文件服务器引擎 + /// 终极文件管理服务器 /// - private SimpleFileServer net_simple_file_server { get; set; } = null; + private UltimateFileServer net_ultimate_file_server { get; set; } = null; /// - /// 共享文件服务引擎初始化 + /// 终极文件管理服务器 /// - private void Simple_File_Initiaization() + private void Ultimate_File_Initiaization() { try { - net_simple_file_server = new SimpleFileServer() - { - //文件信息存储路径 - FileListName = Application.StartupPath + @"\files.txt" - }; - net_simple_file_server.KeyToken = CommonLibrary.CommonProtocol.KeyToken; - net_simple_file_server.ReadFromFile(); - net_simple_file_server.LogNet =new LogNetSingle(LogSavePath + @"\share_file_log.txt"); - net_simple_file_server.LogNet.SetMessageDegree(HslMessageDegree.DEBUG);//默认debug及以上级别日志均进行存储,根据需要自行选择 - //文件存储路径 - net_simple_file_server.FilesDirectoryPath = Application.StartupPath + @"\Files"; - net_simple_file_server.FilesDirectoryPathTemp = Application.StartupPath + @"\Temp"; - net_simple_file_server.FileChange += Net_simple_file_server_FileChange; - net_simple_file_server.ServerStart(CommonLibrary.CommonProtocol.Port_Share_File); + net_ultimate_file_server = new UltimateFileServer(); + net_ultimate_file_server.KeyToken = CommonProtocol.KeyToken; + net_ultimate_file_server.LogNet =new LogNetSingle(LogSavePath + @"\ultimate_file_log.txt"); + net_ultimate_file_server.LogNet.SetMessageDegree(HslMessageDegree.DEBUG);//默认debug及以上级别日志均进行存储,根据需要自行选择 + net_ultimate_file_server.FilesDirectoryPath = Application.StartupPath + @"\ServerFiles"; + net_ultimate_file_server.ServerStart(CommonProtocol.Port_Ultimate_File_Server); + + // 共享文件管理器只是终极文件管理器的一个子容器 + ShareFileContainer = net_ultimate_file_server.GetGroupFromFilePath(Application.StartupPath + @"\ServerFiles\ShareFiles"); + ShareFileContainer.FileCountChanged += ShareFileContainer_FileCountChanged; } catch (Exception ex) { @@ -1164,12 +1193,18 @@ namespace 软件系统服务端模版 } } - private void Net_simple_file_server_FileChange() + + // 以下是共享文件的功能 + + private void ShareFileContainer_FileCountChanged(int obj) { //将文件数据发送给客户端 - net_socket_server.SendAllClients(CommonHeadCode.MultiNetHeadCode.文件总数量, net_simple_file_server.File_Count().ToString()); + net_socket_server.SendAllClients(CommonHeadCode.MultiNetHeadCode.文件总数量, ShareFileContainer.FileCount.ToString()); } + private GroupFileContainer ShareFileContainer; + + #endregion @@ -1181,8 +1216,7 @@ namespace 软件系统服务端模版 * 举例: AdviceLogHelper.SaveInformation("张三:主界面的颜色稍微调整一下"); * **********************************************************************************************************/ - - + /// /// 用来记录一般的事物日志 @@ -1285,7 +1319,7 @@ namespace 软件系统服务端模版 for (int i = 0; i < 100; i++) { int startIndex = i * 42; - ushort netState = BitConverter.ToUInt16(object1, startIndex);//为0,说明数据正常,不为0说明网络访问失败或是指令出错 + ushort netState = BitConverter.ToUInt16(object1, startIndex);// 为0,说明数据正常,不为0说明网络访问失败或是指令出错 } @@ -1311,7 +1345,7 @@ namespace 软件系统服务端模版 * 示例2 调用 string str = OrderAutoCreate.GetNumericalOrder("KN");//str为 KN201705190000002 * 注意 默认计数不清空,后面的1,2会一值累加,可以调用900亿亿次,如果需要定期清空,请自行周期调用OrderAutoCreate.ClearNumericalOrder(); * 提示 如果需要定期清空,在本页面的ThreadTimeTick()方法中清空即可 - * 性能 一秒钟可以响应请求100万次,并成功存储当前计数值 + * 性能 一秒钟可以响应请求100万次以上,具体值依据电脑的性能而定,并成功存储当前计数值 * **********************************************************************************************************/ @@ -1364,12 +1398,12 @@ namespace 软件系统服务端模版 #endregion - #region 系统日志块 + #region System Log Function /********************************************************************************************************* * - * 说明 日志的使用方式分为5个等级,1.DEBUG 2.INFO 3.WARN 4.ERROR 5.FATAL 对应的调用方法不一致 + * 说明 日志的使用方式分为6个等级,1.DEBUG 2.INFO 3.WARN 4.ERROR 5.FATAL 6.None 对应的调用方法不一致 * 具体 如果想要调用存储[信息]等级日志,调用 RuntimeLogHelper.WriteInfo("等待存储的信息") * 大小 调用10000次存储信息后,日志文件大小在200K左右,需要手动进行情况日志 * 注意 在存储信息时不要带有一个特殊字符,[\u0002]不可见的标识文本开始字符,会影响日志筛选时的准确性 @@ -1389,11 +1423,11 @@ namespace 软件系统服务端模版 #endregion - #region 邮件系统块 + #region Mail Send Function /****************************************************************************************** * - * 本邮件系统使用了组件中预设好的中间发送地址,已经内置了两个邮件地址 + * 本邮件系统使用了组件中预设好的中间发送地址,已经内置了两个邮件地址,一个163邮箱,另一个是QQ邮箱 * 本处仅仅使用了163网易的邮箱发送 * 下面提供了两个方法,实现了方便的发送,可以在程序的其他地方进行调用 * @@ -1412,12 +1446,19 @@ namespace 软件系统服务端模版 SoftMail.MailSystem163.MailSendAddress = "hsl200909@163.com";// 作者测试的邮箱地址,实际需要换成你自己的 } - + /// + /// 调用该方法可以直接将异常发送到你的邮箱里,如果服务器连接网络的话 + /// + /// 异常 private void SendUserMail(Exception ex) { if(IsSendMailEnable) SoftMail.MailSystem163.SendMail(ex); } - + /// + /// 发送指定的主题和内容到指定的邮箱 + /// + /// 主题 + /// 内容 private void SendUserMail(string subject, string body) { if (IsSendMailEnable) SoftMail.MailSystem163.SendMail(subject, body); @@ -1425,8 +1466,6 @@ namespace 软件系统服务端模版 #endregion - - - + } }