diff --git a/src/PBAnaly/Assist/GlobalData.cs b/src/PBAnaly/Assist/GlobalData.cs
new file mode 100644
index 0000000..fd0c1d6
--- /dev/null
+++ b/src/PBAnaly/Assist/GlobalData.cs
@@ -0,0 +1,169 @@
+using AntdUI;
+using PBAnaly.LoginCommon;
+using System;
+using System.Collections.Generic;
+using System.Data;
+using System.Data.SQLite;
+using System.IO;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace PBAnaly.Assist
+{
+ public static class GlobalData
+ {
+
+ public static string dbPath = "UserManage.db";
+ public static string connectionString = $"Data Source={dbPath};Version=3;";
+
+
+ #region Propertys 全局属性,属性名、属性值
+ ///
+ /// 全局属性,属性名、属性值
+ ///
+ private static Dictionary Propertys;
+ #endregion
+ ///
+ /// 全局属性更改事件
+ ///
+ public static event PropertyChangedHandle PropertyChanged;
+ ///
+ /// 带两个参数无返回值的委托
+ ///
+ /// 属性名
+ /// 属性值
+ public delegate void PropertyChangedHandle(string name, string value);
+
+ #region SetProperty 设置全局属性
+ ///
+ /// 设置全局属性
+ ///
+ /// 属性名
+ /// 属性值
+ public static void SetProperty(string name, string value)
+ {
+ //判断当前key是否在集合内
+ if (GlobalData.Propertys.ContainsKey(name))
+ {
+ //当前key在集合内
+ //判断要设置的属性是否相同
+ if (GlobalData.Propertys[name] != value)
+ {
+ //设置属性
+ GlobalData.Propertys[name] = value;
+
+ //根据属性名更新数据库
+ UpdateGlobalPropertyByName(name, value);
+
+ //触发属性更改事件
+ PropertyChanged?.Invoke(name, value);
+ }
+ }
+ else
+ {
+ try
+ {
+ using (var connection = new SQLiteConnection(connectionString))
+ {
+ connection.Open();
+
+ string insertSQL = @"
+ INSERT OR IGNORE INTO global_property (property_name, property_value)
+ VALUES (@property_name, @property_value);";
+
+ using (var command = new SQLiteCommand(insertSQL, connection))
+ {
+ // 参数化查询,防止SQL注入
+ command.Parameters.AddWithValue("@property_name", name);
+ command.Parameters.AddWithValue("@property_value", value);
+ command.ExecuteNonQuery();
+ }
+
+ connection.Close();
+ }
+
+ //更新集合中当前key对应的值
+ GlobalData.Propertys[name] = value;
+
+ PropertyChanged?.Invoke(name, value);
+ }
+ catch (Exception ex)
+ {
+ }
+ }
+ }
+ #endregion
+
+ #region GetProperty 根据属性名获取属性值
+ ///
+ /// 根据属性名获取属性值
+ ///
+ /// 属性名
+ /// 属性值
+ public static string GetProperty(string name)
+ {
+ string value = "";
+ if (GlobalData.Propertys.ContainsKey(name))
+ {
+ value = GlobalData.Propertys[name];
+ }
+ return value;
+ }
+ #endregion
+
+ #region LoadGlobalPropertyFromDb 加载全局变量
+ ///
+ /// 加载全局变量LoadGlobalPropertyFromDb
+ ///
+ public static void LoadGlobalPropertyFromDb()
+ {
+ Propertys = new Dictionary();
+ using (var connection = new SQLiteConnection(connectionString))
+ {
+ connection.Open();
+
+ string query = "select *from global_property";
+ using (var command = new SQLiteCommand(query, connection))
+ {
+ using (var reader = command.ExecuteReader())
+ {
+ while (reader.Read())
+ {
+ string key = reader["property_name"].ToString();
+ string value = reader["property_value"].ToString();
+ GlobalData.Propertys.Add(key, value);
+ }
+ }
+ }
+
+ connection.Close();
+ }
+ }
+ #endregion
+
+ #region UpdateGlobalPropertyByName 根据属性名更新属性表
+ ///
+ /// 根据属性名更新属性表
+ ///
+ /// 属性名
+ /// 属性值
+ private static void UpdateGlobalPropertyByName(string name, object value)
+ {
+ string sql = string.Format("update global_property set property_value='{0}' where property_name='{1}'", value, name);
+ using (SQLiteConnection conn = new SQLiteConnection(connectionString))
+ {
+ conn.Open();
+
+ using (SQLiteCommand cmd = new SQLiteCommand(sql, conn))
+ {
+ var blnResult = (cmd.ExecuteNonQuery() > 0);
+ }
+ conn.Close();
+ }
+
+ }
+ #endregion
+
+ }
+}
diff --git a/src/PBAnaly/LoginCommon/BackPassWordForm.cs b/src/PBAnaly/LoginCommon/BackPassWordForm.cs
index 678a53a..f44dc8a 100644
--- a/src/PBAnaly/LoginCommon/BackPassWordForm.cs
+++ b/src/PBAnaly/LoginCommon/BackPassWordForm.cs
@@ -1,11 +1,15 @@
using AntdUI;
+using PBAnaly.Assist;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
+using System.Globalization;
using System.Linq;
+using System.Resources;
using System.Text;
+using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
@@ -21,6 +25,15 @@ namespace PBAnaly.LoginCommon
this.StartPosition = FormStartPosition.CenterScreen;
this.Location = new System.Drawing.Point((Screen.PrimaryScreen.WorkingArea.Width - this.Width) / 2,
(Screen.PrimaryScreen.WorkingArea.Height - this.Height) / 2);
+
+ if (GlobalData.GetProperty("Language") == "Chinese")
+ {
+ SetLanguage("zh-CN");
+ }
+ else
+ {
+ SetLanguage("en-US");
+ }
}
#region =====重写WndPoc方法 无边框窗体更改大小及拖动=========
@@ -102,7 +115,49 @@ namespace PBAnaly.LoginCommon
}
#endregion
- private void txt_UserName_TextChanged(object sender, EventArgs e)
+ #region 中英文切换模块
+ ResourceManager resourceManager;
+ private void SetLanguage(string cultureCode)
+ {
+ resourceManager = new ResourceManager("PBAnaly.Properties.Resources", typeof(MainForm).Assembly);
+
+ // 设置当前线程的文化信息
+ Thread.CurrentThread.CurrentUICulture = new CultureInfo(cultureCode);
+
+ // 更新所有控件的文本
+ UpdateControlsText();
+ }
+
+ // 更新所有控件的文本
+ private void UpdateControlsText()
+ {
+ //// 遍历所有控件并更新文本
+ foreach (Control control in this.Controls)
+ {
+ UpdateControlText(control);
+ }
+ }
+ // 更新单个控件的文本
+ private void UpdateControlText(Control control)
+ {
+ //// 直接通过控件的 Name 属性获取资源字符串
+ string resourceText = resourceManager.GetString(control.Name);
+ if (!string.IsNullOrEmpty(resourceText))
+ {
+ control.Text = resourceText;
+ }
+
+ // 如果控件包含子控件,则递归更新子控件
+ foreach (Control subControl in control.Controls)
+ {
+ UpdateControlText(subControl);
+ }
+ }
+ #endregion
+
+
+
+private void txt_UserName_TextChanged(object sender, EventArgs e)
{
try
{
diff --git a/src/PBAnaly/LoginCommon/BackPassWordForm.en-US.resx b/src/PBAnaly/LoginCommon/BackPassWordForm.en-US.resx
new file mode 100644
index 0000000..20f6acc
--- /dev/null
+++ b/src/PBAnaly/LoginCommon/BackPassWordForm.en-US.resx
@@ -0,0 +1,123 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ back
+
+
diff --git a/src/PBAnaly/LoginCommon/BackPassWordForm.zh-CN.resx b/src/PBAnaly/LoginCommon/BackPassWordForm.zh-CN.resx
new file mode 100644
index 0000000..66c0f7a
--- /dev/null
+++ b/src/PBAnaly/LoginCommon/BackPassWordForm.zh-CN.resx
@@ -0,0 +1,123 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 返回
+
+
diff --git a/src/PBAnaly/LoginCommon/LoginForm.cs b/src/PBAnaly/LoginCommon/LoginForm.cs
index 38637cd..85b7514 100644
--- a/src/PBAnaly/LoginCommon/LoginForm.cs
+++ b/src/PBAnaly/LoginCommon/LoginForm.cs
@@ -7,8 +7,11 @@ using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
+using System.Globalization;
using System.Linq;
+using System.Resources;
using System.Text;
+using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
@@ -27,7 +30,16 @@ namespace PBAnaly.LoginCommon
this.StartPosition = FormStartPosition.CenterScreen;
this.Location = new System.Drawing.Point((Screen.PrimaryScreen.WorkingArea.Width - this.Width) / 2,
(Screen.PrimaryScreen.WorkingArea.Height - this.Height) / 2);
-
+
+ if (GlobalData.GetProperty("Language") == "Chinese")
+ {
+ SetLanguage("zh-CN");
+ }
+ else
+ {
+ SetLanguage("en-US");
+ }
+
//如果上一次登录的时候是勾选了记住本次登录,那么就像用户名和密码填充到本文控件
if (UserManage.LastLoginUser.Count > 0)
@@ -44,9 +56,48 @@ namespace PBAnaly.LoginCommon
}
}
+ #region 中英文切换模块
+ ResourceManager resourceManager;
+ private void SetLanguage(string cultureCode)
+ {
+ resourceManager = new ResourceManager("PBAnaly.Properties.Resources", typeof(MainForm).Assembly);
+
+ // 设置当前线程的文化信息
+ Thread.CurrentThread.CurrentUICulture = new CultureInfo(cultureCode);
+
+ // 更新所有控件的文本
+ UpdateControlsText();
+ }
+
+ // 更新所有控件的文本
+ private void UpdateControlsText()
+ {
+ //// 遍历所有控件并更新文本
+ foreach (Control control in this.Controls)
+ {
+ UpdateControlText(control);
+ }
+ }
+ // 更新单个控件的文本
+ private void UpdateControlText(Control control)
+ {
+ //// 直接通过控件的 Name 属性获取资源字符串
+ string resourceText = resourceManager.GetString(control.Name);
+ if (!string.IsNullOrEmpty(resourceText))
+ {
+ control.Text = resourceText;
+ }
+
+ // 如果控件包含子控件,则递归更新子控件
+ foreach (Control subControl in control.Controls)
+ {
+ UpdateControlText(subControl);
+ }
+ }
+ #endregion
#region =====重写WndPoc方法 无边框窗体更改大小及拖动=========
- const int HTLEFT = 10;
+const int HTLEFT = 10;
const int HTRIGHT = 11;
const int HTTOP = 12;
const int HTTOPLEFT = 13;
diff --git a/src/PBAnaly/LoginCommon/RegisterFrom.Designer.cs b/src/PBAnaly/LoginCommon/RegisterFrom.Designer.cs
index 5be9a4f..f195692 100644
--- a/src/PBAnaly/LoginCommon/RegisterFrom.Designer.cs
+++ b/src/PBAnaly/LoginCommon/RegisterFrom.Designer.cs
@@ -29,19 +29,19 @@
private void InitializeComponent()
{
this.panel1 = new System.Windows.Forms.Panel();
+ this.label_re_Answer = new System.Windows.Forms.Label();
+ this.label_re_question = new System.Windows.Forms.Label();
+ this.label_enterPassword = new System.Windows.Forms.Label();
+ this.label_re_password = new System.Windows.Forms.Label();
+ this.label_re_userNma = new System.Windows.Forms.Label();
+ this.txt_answer = new System.Windows.Forms.TextBox();
+ this.txt_broblem = new System.Windows.Forms.TextBox();
+ this.txt_enter_password = new System.Windows.Forms.TextBox();
this.txt_Password = new System.Windows.Forms.TextBox();
this.txt_UserName = new System.Windows.Forms.TextBox();
- this.btn_register = new MaterialSkin.Controls.MaterialButton();
- this.btn_back = new MaterialSkin.Controls.MaterialButton();
+ this.btn_re_register = new MaterialSkin.Controls.MaterialButton();
+ this.btn_back_form_re = new MaterialSkin.Controls.MaterialButton();
this.label4 = new System.Windows.Forms.Label();
- this.txt_enter_password = new System.Windows.Forms.TextBox();
- this.txt_broblem = new System.Windows.Forms.TextBox();
- this.txt_answer = new System.Windows.Forms.TextBox();
- this.label1 = new System.Windows.Forms.Label();
- this.label2 = new System.Windows.Forms.Label();
- this.label3 = new System.Windows.Forms.Label();
- this.label5 = new System.Windows.Forms.Label();
- this.label6 = new System.Windows.Forms.Label();
this.panel1.SuspendLayout();
this.SuspendLayout();
//
@@ -51,23 +51,112 @@
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.panel1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50)))));
- this.panel1.Controls.Add(this.label6);
- this.panel1.Controls.Add(this.label5);
- this.panel1.Controls.Add(this.label3);
- this.panel1.Controls.Add(this.label2);
- this.panel1.Controls.Add(this.label1);
+ this.panel1.Controls.Add(this.label_re_Answer);
+ this.panel1.Controls.Add(this.label_re_question);
+ this.panel1.Controls.Add(this.label_enterPassword);
+ this.panel1.Controls.Add(this.label_re_password);
+ this.panel1.Controls.Add(this.label_re_userNma);
this.panel1.Controls.Add(this.txt_answer);
this.panel1.Controls.Add(this.txt_broblem);
this.panel1.Controls.Add(this.txt_enter_password);
this.panel1.Controls.Add(this.txt_Password);
this.panel1.Controls.Add(this.txt_UserName);
- this.panel1.Controls.Add(this.btn_register);
- this.panel1.Controls.Add(this.btn_back);
+ this.panel1.Controls.Add(this.btn_re_register);
+ this.panel1.Controls.Add(this.btn_back_form_re);
this.panel1.Location = new System.Drawing.Point(-1, 33);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(638, 537);
this.panel1.TabIndex = 452;
//
+ // label_re_Answer
+ //
+ this.label_re_Answer.AutoSize = true;
+ this.label_re_Answer.Font = new System.Drawing.Font("微软雅黑", 13F, System.Drawing.FontStyle.Bold);
+ this.label_re_Answer.ForeColor = System.Drawing.Color.White;
+ this.label_re_Answer.Location = new System.Drawing.Point(90, 361);
+ this.label_re_Answer.Name = "label_re_Answer";
+ this.label_re_Answer.Size = new System.Drawing.Size(80, 25);
+ this.label_re_Answer.TabIndex = 459;
+ this.label_re_Answer.Text = "Answer";
+ //
+ // label_re_question
+ //
+ this.label_re_question.AutoSize = true;
+ this.label_re_question.Font = new System.Drawing.Font("微软雅黑", 13F, System.Drawing.FontStyle.Bold);
+ this.label_re_question.ForeColor = System.Drawing.Color.White;
+ this.label_re_question.Location = new System.Drawing.Point(90, 282);
+ this.label_re_question.Name = "label_re_question";
+ this.label_re_question.Size = new System.Drawing.Size(94, 25);
+ this.label_re_question.TabIndex = 458;
+ this.label_re_question.Text = "Question";
+ //
+ // label_enterPassword
+ //
+ this.label_enterPassword.AutoSize = true;
+ this.label_enterPassword.Font = new System.Drawing.Font("微软雅黑", 13F, System.Drawing.FontStyle.Bold);
+ this.label_enterPassword.ForeColor = System.Drawing.Color.White;
+ this.label_enterPassword.Location = new System.Drawing.Point(90, 209);
+ this.label_enterPassword.Name = "label_enterPassword";
+ this.label_enterPassword.Size = new System.Drawing.Size(99, 25);
+ this.label_enterPassword.TabIndex = 457;
+ this.label_enterPassword.Text = "Password";
+ //
+ // label_re_password
+ //
+ this.label_re_password.AutoSize = true;
+ this.label_re_password.Font = new System.Drawing.Font("微软雅黑", 13F, System.Drawing.FontStyle.Bold);
+ this.label_re_password.ForeColor = System.Drawing.Color.White;
+ this.label_re_password.Location = new System.Drawing.Point(90, 138);
+ this.label_re_password.Name = "label_re_password";
+ this.label_re_password.Size = new System.Drawing.Size(99, 25);
+ this.label_re_password.TabIndex = 456;
+ this.label_re_password.Text = "Password";
+ //
+ // label_re_userNma
+ //
+ this.label_re_userNma.AutoSize = true;
+ this.label_re_userNma.Font = new System.Drawing.Font("微软雅黑", 13F, System.Drawing.FontStyle.Bold);
+ this.label_re_userNma.ForeColor = System.Drawing.Color.White;
+ this.label_re_userNma.Location = new System.Drawing.Point(90, 72);
+ this.label_re_userNma.Name = "label_re_userNma";
+ this.label_re_userNma.Size = new System.Drawing.Size(65, 25);
+ this.label_re_userNma.TabIndex = 455;
+ this.label_re_userNma.Text = "Name";
+ //
+ // txt_answer
+ //
+ this.txt_answer.Font = new System.Drawing.Font("宋体", 18F);
+ this.txt_answer.Location = new System.Drawing.Point(195, 355);
+ this.txt_answer.Multiline = true;
+ this.txt_answer.Name = "txt_answer";
+ this.txt_answer.Size = new System.Drawing.Size(389, 33);
+ this.txt_answer.TabIndex = 21;
+ this.txt_answer.Text = "Security answer";
+ this.txt_answer.Click += new System.EventHandler(this.txt_answer_Click);
+ //
+ // txt_broblem
+ //
+ this.txt_broblem.Font = new System.Drawing.Font("宋体", 18F);
+ this.txt_broblem.Location = new System.Drawing.Point(195, 276);
+ this.txt_broblem.Multiline = true;
+ this.txt_broblem.Name = "txt_broblem";
+ this.txt_broblem.Size = new System.Drawing.Size(389, 33);
+ this.txt_broblem.TabIndex = 20;
+ this.txt_broblem.Text = "Security problem";
+ this.txt_broblem.Click += new System.EventHandler(this.txt_broblem_Click);
+ //
+ // txt_enter_password
+ //
+ this.txt_enter_password.Font = new System.Drawing.Font("宋体", 18F);
+ this.txt_enter_password.Location = new System.Drawing.Point(195, 203);
+ this.txt_enter_password.Multiline = true;
+ this.txt_enter_password.Name = "txt_enter_password";
+ this.txt_enter_password.PasswordChar = '*';
+ this.txt_enter_password.Size = new System.Drawing.Size(389, 33);
+ this.txt_enter_password.TabIndex = 19;
+ this.txt_enter_password.Text = "User Name";
+ this.txt_enter_password.Click += new System.EventHandler(this.txt_enter_password_Click);
+ //
// txt_Password
//
this.txt_Password.Font = new System.Drawing.Font("宋体", 18F);
@@ -91,47 +180,47 @@
this.txt_UserName.Text = "User Name";
this.txt_UserName.Click += new System.EventHandler(this.txt_UserName_Click);
//
- // btn_register
+ // btn_re_register
//
- this.btn_register.AutoSize = false;
- this.btn_register.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
- this.btn_register.Density = MaterialSkin.Controls.MaterialButton.MaterialButtonDensity.Default;
- this.btn_register.Depth = 0;
- this.btn_register.HighEmphasis = true;
- this.btn_register.Icon = null;
- this.btn_register.Location = new System.Drawing.Point(394, 431);
- this.btn_register.Margin = new System.Windows.Forms.Padding(4, 6, 4, 6);
- this.btn_register.MouseState = MaterialSkin.MouseState.HOVER;
- this.btn_register.Name = "btn_register";
- this.btn_register.NoAccentTextColor = System.Drawing.Color.Empty;
- this.btn_register.Size = new System.Drawing.Size(147, 36);
- this.btn_register.TabIndex = 15;
- this.btn_register.Text = "register";
- this.btn_register.Type = MaterialSkin.Controls.MaterialButton.MaterialButtonType.Contained;
- this.btn_register.UseAccentColor = false;
- this.btn_register.UseVisualStyleBackColor = true;
- this.btn_register.Click += new System.EventHandler(this.btn_register_Click);
+ this.btn_re_register.AutoSize = false;
+ this.btn_re_register.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
+ this.btn_re_register.Density = MaterialSkin.Controls.MaterialButton.MaterialButtonDensity.Default;
+ this.btn_re_register.Depth = 0;
+ this.btn_re_register.HighEmphasis = true;
+ this.btn_re_register.Icon = null;
+ this.btn_re_register.Location = new System.Drawing.Point(394, 431);
+ this.btn_re_register.Margin = new System.Windows.Forms.Padding(4, 6, 4, 6);
+ this.btn_re_register.MouseState = MaterialSkin.MouseState.HOVER;
+ this.btn_re_register.Name = "btn_re_register";
+ this.btn_re_register.NoAccentTextColor = System.Drawing.Color.Empty;
+ this.btn_re_register.Size = new System.Drawing.Size(147, 36);
+ this.btn_re_register.TabIndex = 15;
+ this.btn_re_register.Text = "register";
+ this.btn_re_register.Type = MaterialSkin.Controls.MaterialButton.MaterialButtonType.Contained;
+ this.btn_re_register.UseAccentColor = false;
+ this.btn_re_register.UseVisualStyleBackColor = true;
+ this.btn_re_register.Click += new System.EventHandler(this.btn_register_Click);
//
- // btn_back
+ // btn_back_form_re
//
- this.btn_back.AutoSize = false;
- this.btn_back.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
- this.btn_back.Density = MaterialSkin.Controls.MaterialButton.MaterialButtonDensity.Default;
- this.btn_back.Depth = 0;
- this.btn_back.HighEmphasis = true;
- this.btn_back.Icon = null;
- this.btn_back.Location = new System.Drawing.Point(14, 9);
- this.btn_back.Margin = new System.Windows.Forms.Padding(4, 6, 4, 6);
- this.btn_back.MouseState = MaterialSkin.MouseState.HOVER;
- this.btn_back.Name = "btn_back";
- this.btn_back.NoAccentTextColor = System.Drawing.Color.Empty;
- this.btn_back.Size = new System.Drawing.Size(62, 30);
- this.btn_back.TabIndex = 14;
- this.btn_back.Text = "back";
- this.btn_back.Type = MaterialSkin.Controls.MaterialButton.MaterialButtonType.Contained;
- this.btn_back.UseAccentColor = false;
- this.btn_back.UseVisualStyleBackColor = true;
- this.btn_back.Click += new System.EventHandler(this.btn_back_Click);
+ this.btn_back_form_re.AutoSize = false;
+ this.btn_back_form_re.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
+ this.btn_back_form_re.Density = MaterialSkin.Controls.MaterialButton.MaterialButtonDensity.Default;
+ this.btn_back_form_re.Depth = 0;
+ this.btn_back_form_re.HighEmphasis = true;
+ this.btn_back_form_re.Icon = null;
+ this.btn_back_form_re.Location = new System.Drawing.Point(14, 9);
+ this.btn_back_form_re.Margin = new System.Windows.Forms.Padding(4, 6, 4, 6);
+ this.btn_back_form_re.MouseState = MaterialSkin.MouseState.HOVER;
+ this.btn_back_form_re.Name = "btn_back_form_re";
+ this.btn_back_form_re.NoAccentTextColor = System.Drawing.Color.Empty;
+ this.btn_back_form_re.Size = new System.Drawing.Size(62, 30);
+ this.btn_back_form_re.TabIndex = 14;
+ this.btn_back_form_re.Text = "back";
+ this.btn_back_form_re.Type = MaterialSkin.Controls.MaterialButton.MaterialButtonType.Contained;
+ this.btn_back_form_re.UseAccentColor = false;
+ this.btn_back_form_re.UseVisualStyleBackColor = true;
+ this.btn_back_form_re.Click += new System.EventHandler(this.btn_back_Click);
//
// label4
//
@@ -144,95 +233,6 @@
this.label4.TabIndex = 454;
this.label4.Text = "register";
//
- // txt_enter_password
- //
- this.txt_enter_password.Font = new System.Drawing.Font("宋体", 18F);
- this.txt_enter_password.Location = new System.Drawing.Point(195, 203);
- this.txt_enter_password.Multiline = true;
- this.txt_enter_password.Name = "txt_enter_password";
- this.txt_enter_password.PasswordChar = '*';
- this.txt_enter_password.Size = new System.Drawing.Size(389, 33);
- this.txt_enter_password.TabIndex = 19;
- this.txt_enter_password.Text = "User Name";
- this.txt_enter_password.Click += new System.EventHandler(this.txt_enter_password_Click);
- //
- // txt_broblem
- //
- this.txt_broblem.Font = new System.Drawing.Font("宋体", 18F);
- this.txt_broblem.Location = new System.Drawing.Point(195, 276);
- this.txt_broblem.Multiline = true;
- this.txt_broblem.Name = "txt_broblem";
- this.txt_broblem.Size = new System.Drawing.Size(389, 33);
- this.txt_broblem.TabIndex = 20;
- this.txt_broblem.Text = "Security problem";
- this.txt_broblem.Click += new System.EventHandler(this.txt_broblem_Click);
- //
- // txt_answer
- //
- this.txt_answer.Font = new System.Drawing.Font("宋体", 18F);
- this.txt_answer.Location = new System.Drawing.Point(195, 355);
- this.txt_answer.Multiline = true;
- this.txt_answer.Name = "txt_answer";
- this.txt_answer.Size = new System.Drawing.Size(389, 33);
- this.txt_answer.TabIndex = 21;
- this.txt_answer.Text = "Security answer";
- this.txt_answer.Click += new System.EventHandler(this.txt_answer_Click);
- //
- // label1
- //
- this.label1.AutoSize = true;
- this.label1.Font = new System.Drawing.Font("微软雅黑", 13F, System.Drawing.FontStyle.Bold);
- this.label1.ForeColor = System.Drawing.Color.White;
- this.label1.Location = new System.Drawing.Point(78, 72);
- this.label1.Name = "label1";
- this.label1.Size = new System.Drawing.Size(111, 25);
- this.label1.TabIndex = 455;
- this.label1.Text = "User Name";
- //
- // label2
- //
- this.label2.AutoSize = true;
- this.label2.Font = new System.Drawing.Font("微软雅黑", 13F, System.Drawing.FontStyle.Bold);
- this.label2.ForeColor = System.Drawing.Color.White;
- this.label2.Location = new System.Drawing.Point(90, 138);
- this.label2.Name = "label2";
- this.label2.Size = new System.Drawing.Size(99, 25);
- this.label2.TabIndex = 456;
- this.label2.Text = "Password";
- //
- // label3
- //
- this.label3.AutoSize = true;
- this.label3.Font = new System.Drawing.Font("微软雅黑", 13F, System.Drawing.FontStyle.Bold);
- this.label3.ForeColor = System.Drawing.Color.White;
- this.label3.Location = new System.Drawing.Point(11, 209);
- this.label3.Name = "label3";
- this.label3.Size = new System.Drawing.Size(178, 25);
- this.label3.TabIndex = 457;
- this.label3.Text = "Confirm Password";
- //
- // label5
- //
- this.label5.AutoSize = true;
- this.label5.Font = new System.Drawing.Font("微软雅黑", 13F, System.Drawing.FontStyle.Bold);
- this.label5.ForeColor = System.Drawing.Color.White;
- this.label5.Location = new System.Drawing.Point(23, 282);
- this.label5.Name = "label5";
- this.label5.Size = new System.Drawing.Size(166, 25);
- this.label5.TabIndex = 458;
- this.label5.Text = "security question";
- //
- // label6
- //
- this.label6.AutoSize = true;
- this.label6.Font = new System.Drawing.Font("微软雅黑", 13F, System.Drawing.FontStyle.Bold);
- this.label6.ForeColor = System.Drawing.Color.White;
- this.label6.Location = new System.Drawing.Point(109, 361);
- this.label6.Name = "label6";
- this.label6.Size = new System.Drawing.Size(80, 25);
- this.label6.TabIndex = 459;
- this.label6.Text = "Answer";
- //
// RegisterFrom
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
@@ -259,13 +259,13 @@
private System.Windows.Forms.TextBox txt_enter_password;
private System.Windows.Forms.TextBox txt_Password;
private System.Windows.Forms.TextBox txt_UserName;
- private MaterialSkin.Controls.MaterialButton btn_register;
- private MaterialSkin.Controls.MaterialButton btn_back;
+ private MaterialSkin.Controls.MaterialButton btn_re_register;
+ private MaterialSkin.Controls.MaterialButton btn_back_form_re;
private System.Windows.Forms.Label label4;
- private System.Windows.Forms.Label label6;
- private System.Windows.Forms.Label label5;
- private System.Windows.Forms.Label label3;
- private System.Windows.Forms.Label label2;
- private System.Windows.Forms.Label label1;
+ private System.Windows.Forms.Label label_re_Answer;
+ private System.Windows.Forms.Label label_re_question;
+ private System.Windows.Forms.Label label_enterPassword;
+ private System.Windows.Forms.Label label_re_password;
+ private System.Windows.Forms.Label label_re_userNma;
}
}
\ No newline at end of file
diff --git a/src/PBAnaly/LoginCommon/RegisterFrom.cs b/src/PBAnaly/LoginCommon/RegisterFrom.cs
index 68c1fbe..4a46346 100644
--- a/src/PBAnaly/LoginCommon/RegisterFrom.cs
+++ b/src/PBAnaly/LoginCommon/RegisterFrom.cs
@@ -1,10 +1,14 @@
-using System;
+using PBAnaly.Assist;
+using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
+using System.Globalization;
using System.Linq;
+using System.Resources;
using System.Text;
+using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
@@ -22,8 +26,56 @@ namespace PBAnaly.LoginCommon
this.Location = new System.Drawing.Point((Screen.PrimaryScreen.WorkingArea.Width - this.Width) / 2,
(Screen.PrimaryScreen.WorkingArea.Height - this.Height) / 2);
+ if (GlobalData.GetProperty("Language") == "Chinese")
+ {
+ SetLanguage("zh-CN");
+ }
+ else
+ {
+ SetLanguage("en-US");
+ }
}
+ #region 中英文切换模块
+ ResourceManager resourceManager;
+ private void SetLanguage(string cultureCode)
+ {
+ resourceManager = new ResourceManager("PBAnaly.Properties.Resources", typeof(MainForm).Assembly);
+
+ // 设置当前线程的文化信息
+ Thread.CurrentThread.CurrentUICulture = new CultureInfo(cultureCode);
+
+ // 更新所有控件的文本
+ UpdateControlsText();
+ }
+
+ // 更新所有控件的文本
+ private void UpdateControlsText()
+ {
+ //// 遍历所有控件并更新文本
+ foreach (Control control in this.Controls)
+ {
+ UpdateControlText(control);
+ }
+ }
+ // 更新单个控件的文本
+ private void UpdateControlText(Control control)
+ {
+ //// 直接通过控件的 Name 属性获取资源字符串
+ string resourceText = resourceManager.GetString(control.Name);
+ if (!string.IsNullOrEmpty(resourceText))
+ {
+ control.Text = resourceText;
+ }
+
+ // 如果控件包含子控件,则递归更新子控件
+ foreach (Control subControl in control.Controls)
+ {
+ UpdateControlText(subControl);
+ }
+ }
+ #endregion
+
#region =====重写WndPoc方法 无边框窗体更改大小及拖动=========
const int HTLEFT = 10;
const int HTRIGHT = 11;
diff --git a/src/PBAnaly/LoginCommon/RoleManageForm.Designer.cs b/src/PBAnaly/LoginCommon/RoleManageForm.Designer.cs
index 07f0e3b..fd978b6 100644
--- a/src/PBAnaly/LoginCommon/RoleManageForm.Designer.cs
+++ b/src/PBAnaly/LoginCommon/RoleManageForm.Designer.cs
@@ -33,9 +33,9 @@
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle4 = new System.Windows.Forms.DataGridViewCellStyle();
this.panel1 = new System.Windows.Forms.Panel();
- this.btn_Close = new System.Windows.Forms.Button();
+ this.btn_role_save = new System.Windows.Forms.Button();
this.dataGridView1 = new System.Windows.Forms.DataGridView();
- this.btn_save = new System.Windows.Forms.Button();
+ this.btn_Close = new System.Windows.Forms.Button();
this.Column1 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.Column2 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.Column3 = new System.Windows.Forms.DataGridViewCheckBoxColumn();
@@ -52,27 +52,28 @@
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.panel1.BackColor = System.Drawing.Color.White;
- this.panel1.Controls.Add(this.btn_save);
+ this.panel1.Controls.Add(this.btn_role_save);
this.panel1.Controls.Add(this.dataGridView1);
this.panel1.Location = new System.Drawing.Point(0, 27);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(756, 569);
this.panel1.TabIndex = 0;
//
- // btn_Close
+ // btn_role_save
//
- this.btn_Close.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
- this.btn_Close.BackColor = System.Drawing.Color.Transparent;
- this.btn_Close.FlatAppearance.BorderSize = 0;
- this.btn_Close.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
- this.btn_Close.ForeColor = System.Drawing.Color.Transparent;
- this.btn_Close.Image = global::PBAnaly.Properties.Resources.关闭White;
- this.btn_Close.Location = new System.Drawing.Point(712, 0);
- this.btn_Close.Name = "btn_Close";
- this.btn_Close.Size = new System.Drawing.Size(44, 28);
- this.btn_Close.TabIndex = 458;
- this.btn_Close.UseVisualStyleBackColor = false;
- this.btn_Close.Click += new System.EventHandler(this.btn_Close_Click);
+ this.btn_role_save.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(32)))), ((int)(((byte)(96)))));
+ this.btn_role_save.FlatAppearance.BorderSize = 0;
+ this.btn_role_save.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
+ this.btn_role_save.Font = new System.Drawing.Font("宋体", 15F, System.Drawing.FontStyle.Bold);
+ this.btn_role_save.ForeColor = System.Drawing.Color.White;
+ this.btn_role_save.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
+ this.btn_role_save.Location = new System.Drawing.Point(641, 49);
+ this.btn_role_save.Name = "btn_role_save";
+ this.btn_role_save.Size = new System.Drawing.Size(101, 38);
+ this.btn_role_save.TabIndex = 506;
+ this.btn_role_save.Text = "保存";
+ this.btn_role_save.UseVisualStyleBackColor = false;
+ this.btn_role_save.Click += new System.EventHandler(this.btn_save_Click);
//
// dataGridView1
//
@@ -120,57 +121,56 @@
this.dataGridView1.Size = new System.Drawing.Size(632, 569);
this.dataGridView1.TabIndex = 4;
//
- // btn_save
+ // btn_Close
//
- this.btn_save.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(32)))), ((int)(((byte)(96)))));
- this.btn_save.FlatAppearance.BorderSize = 0;
- this.btn_save.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
- this.btn_save.Font = new System.Drawing.Font("宋体", 15F, System.Drawing.FontStyle.Bold);
- this.btn_save.ForeColor = System.Drawing.Color.White;
- this.btn_save.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
- this.btn_save.Location = new System.Drawing.Point(641, 49);
- this.btn_save.Name = "btn_save";
- this.btn_save.Size = new System.Drawing.Size(101, 38);
- this.btn_save.TabIndex = 506;
- this.btn_save.Text = "保存";
- this.btn_save.UseVisualStyleBackColor = false;
- this.btn_save.Click += new System.EventHandler(this.btn_save_Click);
+ this.btn_Close.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+ this.btn_Close.BackColor = System.Drawing.Color.Transparent;
+ this.btn_Close.FlatAppearance.BorderSize = 0;
+ this.btn_Close.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
+ this.btn_Close.ForeColor = System.Drawing.Color.Transparent;
+ this.btn_Close.Image = global::PBAnaly.Properties.Resources.关闭White;
+ this.btn_Close.Location = new System.Drawing.Point(712, 0);
+ this.btn_Close.Name = "btn_Close";
+ this.btn_Close.Size = new System.Drawing.Size(44, 28);
+ this.btn_Close.TabIndex = 458;
+ this.btn_Close.UseVisualStyleBackColor = false;
+ this.btn_Close.Click += new System.EventHandler(this.btn_Close_Click);
//
// Column1
//
- this.Column1.HeaderText = "序号";
+ this.Column1.HeaderText = "ID";
this.Column1.Name = "Column1";
//
// Column2
//
- this.Column2.HeaderText = "描述";
+ this.Column2.HeaderText = "Description";
this.Column2.Name = "Column2";
this.Column2.ReadOnly = true;
//
// Column3
//
- this.Column3.HeaderText = "操作员";
+ this.Column3.HeaderText = "Operator";
this.Column3.Name = "Column3";
this.Column3.Resizable = System.Windows.Forms.DataGridViewTriState.True;
this.Column3.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic;
//
// Column4
//
- this.Column4.HeaderText = "工程师";
+ this.Column4.HeaderText = "Engineer";
this.Column4.Name = "Column4";
this.Column4.Resizable = System.Windows.Forms.DataGridViewTriState.True;
this.Column4.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic;
//
// Column5
//
- this.Column5.HeaderText = "管理员";
+ this.Column5.HeaderText = "Administrator";
this.Column5.Name = "Column5";
this.Column5.Resizable = System.Windows.Forms.DataGridViewTriState.True;
this.Column5.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic;
//
// Column6
//
- this.Column6.HeaderText = "超级管理员";
+ this.Column6.HeaderText = "SupperAdministrator";
this.Column6.Name = "Column6";
this.Column6.Resizable = System.Windows.Forms.DataGridViewTriState.True;
this.Column6.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic;
@@ -198,7 +198,7 @@
private System.Windows.Forms.Panel panel1;
private System.Windows.Forms.DataGridView dataGridView1;
private System.Windows.Forms.Button btn_Close;
- private System.Windows.Forms.Button btn_save;
+ private System.Windows.Forms.Button btn_role_save;
private System.Windows.Forms.DataGridViewTextBoxColumn Column1;
private System.Windows.Forms.DataGridViewTextBoxColumn Column2;
private System.Windows.Forms.DataGridViewCheckBoxColumn Column3;
diff --git a/src/PBAnaly/LoginCommon/RoleManageForm.cs b/src/PBAnaly/LoginCommon/RoleManageForm.cs
index a730897..3593028 100644
--- a/src/PBAnaly/LoginCommon/RoleManageForm.cs
+++ b/src/PBAnaly/LoginCommon/RoleManageForm.cs
@@ -1,10 +1,14 @@
-using System;
+using PBAnaly.Assist;
+using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
+using System.Globalization;
using System.Linq;
+using System.Resources;
using System.Text;
+using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
@@ -20,8 +24,58 @@ namespace PBAnaly.LoginCommon
this.StartPosition = FormStartPosition.CenterScreen;
this.Location = new System.Drawing.Point((Screen.PrimaryScreen.WorkingArea.Width - this.Width) / 2,
(Screen.PrimaryScreen.WorkingArea.Height - this.Height) / 2);
+
+ if (GlobalData.GetProperty("Language") == "Chinese")
+ {
+ SetLanguage("zh-CN");
+ }
+ else
+ {
+ SetLanguage("en-US");
+ }
+
}
+ #region 中英文切换模块
+ ResourceManager resourceManager;
+ private void SetLanguage(string cultureCode)
+ {
+ resourceManager = new ResourceManager("PBAnaly.Properties.Resources", typeof(MainForm).Assembly);
+
+ // 设置当前线程的文化信息
+ Thread.CurrentThread.CurrentUICulture = new CultureInfo(cultureCode);
+
+ // 更新所有控件的文本
+ UpdateControlsText();
+ }
+
+ // 更新所有控件的文本
+ private void UpdateControlsText()
+ {
+ //// 遍历所有控件并更新文本
+ foreach (Control control in this.Controls)
+ {
+ UpdateControlText(control);
+ }
+ }
+ // 更新单个控件的文本
+ private void UpdateControlText(Control control)
+ {
+ //// 直接通过控件的 Name 属性获取资源字符串
+ string resourceText = resourceManager.GetString(control.Name);
+ if (!string.IsNullOrEmpty(resourceText))
+ {
+ control.Text = resourceText;
+ }
+
+ // 如果控件包含子控件,则递归更新子控件
+ foreach (Control subControl in control.Controls)
+ {
+ UpdateControlText(subControl);
+ }
+ }
+ #endregion
+
#region =====重写WndPoc方法 无边框窗体更改大小及拖动=========
const int HTLEFT = 10;
const int HTRIGHT = 11;
diff --git a/src/PBAnaly/LoginCommon/UserManage.cs b/src/PBAnaly/LoginCommon/UserManage.cs
index df74a64..7657d80 100644
--- a/src/PBAnaly/LoginCommon/UserManage.cs
+++ b/src/PBAnaly/LoginCommon/UserManage.cs
@@ -105,6 +105,19 @@ namespace PBAnaly.LoginCommon
Console.WriteLine("表 'last' 已创建。");
}
+ sql = @"
+ CREATE TABLE IF NOT EXISTS global_property (
+ property_name VARCHAR(200) NOT NULL,
+ property_value VARCHAR(2000) NOT NULL,
+ PRIMARY KEY (property_name)
+ );";
+
+ using (var command = new SQLiteCommand(sql, connection))
+ {
+ command.ExecuteNonQuery(); // 执行SQL命令创建表
+ Console.WriteLine("表 'global_property' 已创建。");
+ }
+
// 插入数据
InsertDefaultUserData(connectionString);
}
diff --git a/src/PBAnaly/LoginCommon/UserManageForm.Designer.cs b/src/PBAnaly/LoginCommon/UserManageForm.Designer.cs
index d583fdd..95107ff 100644
--- a/src/PBAnaly/LoginCommon/UserManageForm.Designer.cs
+++ b/src/PBAnaly/LoginCommon/UserManageForm.Designer.cs
@@ -45,22 +45,22 @@
this.btn_role_manage = new System.Windows.Forms.Button();
this.btn_fix_role = new System.Windows.Forms.Button();
this.txt_UserName = new System.Windows.Forms.TextBox();
- this.label11 = new System.Windows.Forms.Label();
+ this.label_role_userName = new System.Windows.Forms.Label();
this.cbx_role_role = new System.Windows.Forms.ComboBox();
- this.label12 = new System.Windows.Forms.Label();
+ this.label1_role = new System.Windows.Forms.Label();
this.tab_delete = new System.Windows.Forms.TabPage();
this.btn_delete_user = new System.Windows.Forms.Button();
- this.label1 = new System.Windows.Forms.Label();
+ this.label_DeleteTips = new System.Windows.Forms.Label();
this.tab_fix_password = new System.Windows.Forms.TabPage();
this.btn_FixPassword = new System.Windows.Forms.Button();
this.txt_password = new System.Windows.Forms.TextBox();
- this.label3 = new System.Windows.Forms.Label();
+ this.label_password_formUserManage = new System.Windows.Forms.Label();
this.txt_fix_p_UserName = new System.Windows.Forms.TextBox();
- this.label2 = new System.Windows.Forms.Label();
+ this.label_Username_form_userManage = new System.Windows.Forms.Label();
this.panel1 = new System.Windows.Forms.Panel();
- this.btn_delete = new System.Windows.Forms.Button();
- this.btn_edit_password = new System.Windows.Forms.Button();
- this.btn_editRole = new System.Windows.Forms.Button();
+ this.btn_delete_role = new System.Windows.Forms.Button();
+ this.btn_edit_password_role = new System.Windows.Forms.Button();
+ this.btn_editRole_head = new System.Windows.Forms.Button();
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
this.splitContainer1.Panel1.SuspendLayout();
this.splitContainer1.Panel2.SuspendLayout();
@@ -131,7 +131,7 @@
//
dataGridViewCellStyle2.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
this.Column1.DefaultCellStyle = dataGridViewCellStyle2;
- this.Column1.HeaderText = "序号";
+ this.Column1.HeaderText = "ID";
this.Column1.Name = "Column1";
this.Column1.ReadOnly = true;
this.Column1.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable;
@@ -140,14 +140,14 @@
//
dataGridViewCellStyle3.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
this.Column2.DefaultCellStyle = dataGridViewCellStyle3;
- this.Column2.HeaderText = "用户名";
+ this.Column2.HeaderText = "UserName";
this.Column2.Name = "Column2";
this.Column2.ReadOnly = true;
this.Column2.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable;
//
// Column5
//
- this.Column5.HeaderText = "创建人";
+ this.Column5.HeaderText = "Creator";
this.Column5.Name = "Column5";
this.Column5.ReadOnly = true;
//
@@ -155,7 +155,7 @@
//
dataGridViewCellStyle4.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
this.Column3.DefaultCellStyle = dataGridViewCellStyle4;
- this.Column3.HeaderText = "创建时间";
+ this.Column3.HeaderText = "CreationTime";
this.Column3.Name = "Column3";
this.Column3.ReadOnly = true;
this.Column3.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable;
@@ -164,7 +164,7 @@
//
dataGridViewCellStyle5.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
this.Column4.DefaultCellStyle = dataGridViewCellStyle5;
- this.Column4.HeaderText = "权限";
+ this.Column4.HeaderText = "Role";
this.Column4.Name = "Column4";
this.Column4.ReadOnly = true;
this.Column4.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable;
@@ -188,9 +188,9 @@
this.tab_fix.Controls.Add(this.btn_role_manage);
this.tab_fix.Controls.Add(this.btn_fix_role);
this.tab_fix.Controls.Add(this.txt_UserName);
- this.tab_fix.Controls.Add(this.label11);
+ this.tab_fix.Controls.Add(this.label_role_userName);
this.tab_fix.Controls.Add(this.cbx_role_role);
- this.tab_fix.Controls.Add(this.label12);
+ this.tab_fix.Controls.Add(this.label1_role);
this.tab_fix.Location = new System.Drawing.Point(4, 22);
this.tab_fix.Name = "tab_fix";
this.tab_fix.Padding = new System.Windows.Forms.Padding(3);
@@ -241,15 +241,15 @@
this.txt_UserName.Size = new System.Drawing.Size(292, 28);
this.txt_UserName.TabIndex = 504;
//
- // label11
+ // label_role_userName
//
- this.label11.AutoSize = true;
- this.label11.Font = new System.Drawing.Font("宋体", 15F);
- this.label11.Location = new System.Drawing.Point(18, 51);
- this.label11.Name = "label11";
- this.label11.Size = new System.Drawing.Size(69, 20);
- this.label11.TabIndex = 503;
- this.label11.Text = "用户名";
+ this.label_role_userName.AutoSize = true;
+ this.label_role_userName.Font = new System.Drawing.Font("宋体", 15F);
+ this.label_role_userName.Location = new System.Drawing.Point(18, 51);
+ this.label_role_userName.Name = "label_role_userName";
+ this.label_role_userName.Size = new System.Drawing.Size(69, 20);
+ this.label_role_userName.TabIndex = 503;
+ this.label_role_userName.Text = "用户名";
//
// cbx_role_role
//
@@ -266,20 +266,20 @@
this.cbx_role_role.Size = new System.Drawing.Size(292, 28);
this.cbx_role_role.TabIndex = 502;
//
- // label12
+ // label1_role
//
- this.label12.AutoSize = true;
- this.label12.Font = new System.Drawing.Font("宋体", 15F);
- this.label12.Location = new System.Drawing.Point(38, 148);
- this.label12.Name = "label12";
- this.label12.Size = new System.Drawing.Size(49, 20);
- this.label12.TabIndex = 501;
- this.label12.Text = "权限";
+ this.label1_role.AutoSize = true;
+ this.label1_role.Font = new System.Drawing.Font("宋体", 15F);
+ this.label1_role.Location = new System.Drawing.Point(18, 145);
+ this.label1_role.Name = "label1_role";
+ this.label1_role.Size = new System.Drawing.Size(49, 20);
+ this.label1_role.TabIndex = 501;
+ this.label1_role.Text = "权限";
//
// tab_delete
//
this.tab_delete.Controls.Add(this.btn_delete_user);
- this.tab_delete.Controls.Add(this.label1);
+ this.tab_delete.Controls.Add(this.label_DeleteTips);
this.tab_delete.Location = new System.Drawing.Point(4, 22);
this.tab_delete.Name = "tab_delete";
this.tab_delete.Padding = new System.Windows.Forms.Padding(3);
@@ -304,22 +304,22 @@
this.btn_delete_user.UseVisualStyleBackColor = false;
this.btn_delete_user.Click += new System.EventHandler(this.btn_delete_user_Click);
//
- // label1
+ // label_DeleteTips
//
- this.label1.AutoSize = true;
- this.label1.Location = new System.Drawing.Point(119, 17);
- this.label1.Name = "label1";
- this.label1.Size = new System.Drawing.Size(161, 12);
- this.label1.TabIndex = 0;
- this.label1.Text = "选中左侧表格的一行即可删除";
+ this.label_DeleteTips.AutoSize = true;
+ this.label_DeleteTips.Location = new System.Drawing.Point(119, 17);
+ this.label_DeleteTips.Name = "label_DeleteTips";
+ this.label_DeleteTips.Size = new System.Drawing.Size(161, 12);
+ this.label_DeleteTips.TabIndex = 0;
+ this.label_DeleteTips.Text = "选中左侧表格的一行即可删除";
//
// tab_fix_password
//
this.tab_fix_password.Controls.Add(this.btn_FixPassword);
this.tab_fix_password.Controls.Add(this.txt_password);
- this.tab_fix_password.Controls.Add(this.label3);
+ this.tab_fix_password.Controls.Add(this.label_password_formUserManage);
this.tab_fix_password.Controls.Add(this.txt_fix_p_UserName);
- this.tab_fix_password.Controls.Add(this.label2);
+ this.tab_fix_password.Controls.Add(this.label_Username_form_userManage);
this.tab_fix_password.Location = new System.Drawing.Point(4, 22);
this.tab_fix_password.Name = "tab_fix_password";
this.tab_fix_password.Padding = new System.Windows.Forms.Padding(3);
@@ -333,7 +333,7 @@
this.btn_FixPassword.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(32)))), ((int)(((byte)(96)))));
this.btn_FixPassword.FlatAppearance.BorderSize = 0;
this.btn_FixPassword.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
- this.btn_FixPassword.Font = new System.Drawing.Font("宋体", 15F, System.Drawing.FontStyle.Bold);
+ this.btn_FixPassword.Font = new System.Drawing.Font("宋体", 13F, System.Drawing.FontStyle.Bold);
this.btn_FixPassword.ForeColor = System.Drawing.Color.White;
this.btn_FixPassword.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.btn_FixPassword.Location = new System.Drawing.Point(285, 216);
@@ -347,108 +347,108 @@
// txt_password
//
this.txt_password.Font = new System.Drawing.Font("宋体", 10F);
- this.txt_password.Location = new System.Drawing.Point(94, 148);
+ this.txt_password.Location = new System.Drawing.Point(98, 148);
this.txt_password.Multiline = true;
this.txt_password.Name = "txt_password";
this.txt_password.Size = new System.Drawing.Size(292, 28);
this.txt_password.TabIndex = 508;
//
- // label3
+ // label_password_formUserManage
//
- this.label3.AutoSize = true;
- this.label3.Font = new System.Drawing.Font("宋体", 15F);
- this.label3.Location = new System.Drawing.Point(39, 156);
- this.label3.Name = "label3";
- this.label3.Size = new System.Drawing.Size(49, 20);
- this.label3.TabIndex = 507;
- this.label3.Text = "密码";
+ this.label_password_formUserManage.AutoSize = true;
+ this.label_password_formUserManage.Font = new System.Drawing.Font("宋体", 13F);
+ this.label_password_formUserManage.Location = new System.Drawing.Point(19, 158);
+ this.label_password_formUserManage.Name = "label_password_formUserManage";
+ this.label_password_formUserManage.Size = new System.Drawing.Size(44, 18);
+ this.label_password_formUserManage.TabIndex = 507;
+ this.label_password_formUserManage.Text = "密码";
//
// txt_fix_p_UserName
//
this.txt_fix_p_UserName.Font = new System.Drawing.Font("宋体", 13F);
- this.txt_fix_p_UserName.Location = new System.Drawing.Point(94, 46);
+ this.txt_fix_p_UserName.Location = new System.Drawing.Point(98, 46);
this.txt_fix_p_UserName.Multiline = true;
this.txt_fix_p_UserName.Name = "txt_fix_p_UserName";
this.txt_fix_p_UserName.ReadOnly = true;
this.txt_fix_p_UserName.Size = new System.Drawing.Size(292, 28);
this.txt_fix_p_UserName.TabIndex = 506;
//
- // label2
+ // label_Username_form_userManage
//
- this.label2.AutoSize = true;
- this.label2.Font = new System.Drawing.Font("宋体", 15F);
- this.label2.Location = new System.Drawing.Point(19, 54);
- this.label2.Name = "label2";
- this.label2.Size = new System.Drawing.Size(69, 20);
- this.label2.TabIndex = 505;
- this.label2.Text = "用户名";
+ this.label_Username_form_userManage.AutoSize = true;
+ this.label_Username_form_userManage.Font = new System.Drawing.Font("宋体", 13F);
+ this.label_Username_form_userManage.Location = new System.Drawing.Point(19, 54);
+ this.label_Username_form_userManage.Name = "label_Username_form_userManage";
+ this.label_Username_form_userManage.Size = new System.Drawing.Size(62, 18);
+ this.label_Username_form_userManage.TabIndex = 505;
+ this.label_Username_form_userManage.Text = "用户名";
//
// panel1
//
this.panel1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
- this.panel1.Controls.Add(this.btn_delete);
- this.panel1.Controls.Add(this.btn_edit_password);
- this.panel1.Controls.Add(this.btn_editRole);
+ this.panel1.Controls.Add(this.btn_delete_role);
+ this.panel1.Controls.Add(this.btn_edit_password_role);
+ this.panel1.Controls.Add(this.btn_editRole_head);
this.panel1.Location = new System.Drawing.Point(3, 3);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(429, 43);
this.panel1.TabIndex = 453;
//
- // btn_delete
+ // btn_delete_role
//
- this.btn_delete.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ this.btn_delete_role.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
- this.btn_delete.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(32)))), ((int)(((byte)(96)))));
- this.btn_delete.FlatAppearance.BorderSize = 0;
- this.btn_delete.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
- this.btn_delete.Font = new System.Drawing.Font("宋体", 15F, System.Drawing.FontStyle.Bold);
- this.btn_delete.ForeColor = System.Drawing.Color.White;
- this.btn_delete.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
- this.btn_delete.Location = new System.Drawing.Point(181, 2);
- this.btn_delete.Name = "btn_delete";
- this.btn_delete.Size = new System.Drawing.Size(78, 38);
- this.btn_delete.TabIndex = 498;
- this.btn_delete.Text = "删除";
- this.btn_delete.UseVisualStyleBackColor = false;
- this.btn_delete.Click += new System.EventHandler(this.btn_delete_Click);
+ this.btn_delete_role.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(32)))), ((int)(((byte)(96)))));
+ this.btn_delete_role.FlatAppearance.BorderSize = 0;
+ this.btn_delete_role.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
+ this.btn_delete_role.Font = new System.Drawing.Font("宋体", 13F, System.Drawing.FontStyle.Bold);
+ this.btn_delete_role.ForeColor = System.Drawing.Color.White;
+ this.btn_delete_role.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
+ this.btn_delete_role.Location = new System.Drawing.Point(181, 2);
+ this.btn_delete_role.Name = "btn_delete_role";
+ this.btn_delete_role.Size = new System.Drawing.Size(78, 38);
+ this.btn_delete_role.TabIndex = 498;
+ this.btn_delete_role.Text = "删除";
+ this.btn_delete_role.UseVisualStyleBackColor = false;
+ this.btn_delete_role.Click += new System.EventHandler(this.btn_delete_Click);
//
- // btn_edit_password
+ // btn_edit_password_role
//
- this.btn_edit_password.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ this.btn_edit_password_role.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Right)));
- this.btn_edit_password.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(32)))), ((int)(((byte)(96)))));
- this.btn_edit_password.FlatAppearance.BorderSize = 0;
- this.btn_edit_password.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
- this.btn_edit_password.Font = new System.Drawing.Font("宋体", 15F, System.Drawing.FontStyle.Bold);
- this.btn_edit_password.ForeColor = System.Drawing.Color.White;
- this.btn_edit_password.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
- this.btn_edit_password.Location = new System.Drawing.Point(321, 2);
- this.btn_edit_password.Name = "btn_edit_password";
- this.btn_edit_password.Size = new System.Drawing.Size(101, 38);
- this.btn_edit_password.TabIndex = 499;
- this.btn_edit_password.Text = "修改密码";
- this.btn_edit_password.UseVisualStyleBackColor = false;
- this.btn_edit_password.Click += new System.EventHandler(this.btn_edit_password_Click);
+ this.btn_edit_password_role.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(32)))), ((int)(((byte)(96)))));
+ this.btn_edit_password_role.FlatAppearance.BorderSize = 0;
+ this.btn_edit_password_role.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
+ this.btn_edit_password_role.Font = new System.Drawing.Font("宋体", 13F, System.Drawing.FontStyle.Bold);
+ this.btn_edit_password_role.ForeColor = System.Drawing.Color.White;
+ this.btn_edit_password_role.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
+ this.btn_edit_password_role.Location = new System.Drawing.Point(321, 2);
+ this.btn_edit_password_role.Name = "btn_edit_password_role";
+ this.btn_edit_password_role.Size = new System.Drawing.Size(101, 38);
+ this.btn_edit_password_role.TabIndex = 499;
+ this.btn_edit_password_role.Text = "修改密码";
+ this.btn_edit_password_role.UseVisualStyleBackColor = false;
+ this.btn_edit_password_role.Click += new System.EventHandler(this.btn_edit_password_Click);
//
- // btn_editRole
+ // btn_editRole_head
//
- this.btn_editRole.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ this.btn_editRole_head.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)));
- this.btn_editRole.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(32)))), ((int)(((byte)(96)))));
- this.btn_editRole.FlatAppearance.BorderSize = 0;
- this.btn_editRole.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
- this.btn_editRole.Font = new System.Drawing.Font("宋体", 15F, System.Drawing.FontStyle.Bold);
- this.btn_editRole.ForeColor = System.Drawing.Color.White;
- this.btn_editRole.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
- this.btn_editRole.Location = new System.Drawing.Point(7, 3);
- this.btn_editRole.Name = "btn_editRole";
- this.btn_editRole.Size = new System.Drawing.Size(101, 38);
- this.btn_editRole.TabIndex = 497;
- this.btn_editRole.Text = "修改权限";
- this.btn_editRole.UseVisualStyleBackColor = false;
- this.btn_editRole.Click += new System.EventHandler(this.btn_editRole_Click);
+ this.btn_editRole_head.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(32)))), ((int)(((byte)(96)))));
+ this.btn_editRole_head.FlatAppearance.BorderSize = 0;
+ this.btn_editRole_head.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
+ this.btn_editRole_head.Font = new System.Drawing.Font("宋体", 13F, System.Drawing.FontStyle.Bold);
+ this.btn_editRole_head.ForeColor = System.Drawing.Color.White;
+ this.btn_editRole_head.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
+ this.btn_editRole_head.Location = new System.Drawing.Point(7, 3);
+ this.btn_editRole_head.Name = "btn_editRole_head";
+ this.btn_editRole_head.Size = new System.Drawing.Size(101, 38);
+ this.btn_editRole_head.TabIndex = 497;
+ this.btn_editRole_head.Text = "修改权限";
+ this.btn_editRole_head.UseVisualStyleBackColor = false;
+ this.btn_editRole_head.Click += new System.EventHandler(this.btn_editRole_Click);
//
// UserManageForm
//
@@ -480,31 +480,31 @@
private System.Windows.Forms.SplitContainer splitContainer1;
private System.Windows.Forms.DataGridView dataGridView1;
- private System.Windows.Forms.DataGridViewTextBoxColumn Column1;
- private System.Windows.Forms.DataGridViewTextBoxColumn Column2;
- private System.Windows.Forms.DataGridViewTextBoxColumn Column5;
- private System.Windows.Forms.DataGridViewTextBoxColumn Column3;
- private System.Windows.Forms.DataGridViewTextBoxColumn Column4;
private System.Windows.Forms.Panel panel1;
- private System.Windows.Forms.Button btn_delete;
- private System.Windows.Forms.Button btn_edit_password;
- private System.Windows.Forms.Button btn_editRole;
+ private System.Windows.Forms.Button btn_delete_role;
+ private System.Windows.Forms.Button btn_edit_password_role;
+ private System.Windows.Forms.Button btn_editRole_head;
private System.Windows.Forms.TabControl tabControl1;
private System.Windows.Forms.TabPage tab_fix;
private System.Windows.Forms.TabPage tab_delete;
private System.Windows.Forms.TabPage tab_fix_password;
private System.Windows.Forms.Button btn_fix_role;
private System.Windows.Forms.TextBox txt_UserName;
- private System.Windows.Forms.Label label11;
+ private System.Windows.Forms.Label label_role_userName;
private System.Windows.Forms.ComboBox cbx_role_role;
- private System.Windows.Forms.Label label12;
+ private System.Windows.Forms.Label label1_role;
private System.Windows.Forms.Button btn_delete_user;
- private System.Windows.Forms.Label label1;
+ private System.Windows.Forms.Label label_DeleteTips;
private System.Windows.Forms.Button btn_FixPassword;
private System.Windows.Forms.TextBox txt_password;
- private System.Windows.Forms.Label label3;
+ private System.Windows.Forms.Label label_password_formUserManage;
private System.Windows.Forms.TextBox txt_fix_p_UserName;
- private System.Windows.Forms.Label label2;
+ private System.Windows.Forms.Label label_Username_form_userManage;
private System.Windows.Forms.Button btn_role_manage;
+ private System.Windows.Forms.DataGridViewTextBoxColumn Column1;
+ private System.Windows.Forms.DataGridViewTextBoxColumn Column2;
+ private System.Windows.Forms.DataGridViewTextBoxColumn Column5;
+ private System.Windows.Forms.DataGridViewTextBoxColumn Column3;
+ private System.Windows.Forms.DataGridViewTextBoxColumn Column4;
}
}
\ No newline at end of file
diff --git a/src/PBAnaly/LoginCommon/UserManageForm.cs b/src/PBAnaly/LoginCommon/UserManageForm.cs
index 25ed097..6f71626 100644
--- a/src/PBAnaly/LoginCommon/UserManageForm.cs
+++ b/src/PBAnaly/LoginCommon/UserManageForm.cs
@@ -1,10 +1,14 @@
-using System;
+using PBAnaly.Assist;
+using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
+using System.Globalization;
using System.Linq;
+using System.Resources;
using System.Text;
+using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
@@ -19,8 +23,57 @@ namespace PBAnaly.LoginCommon
panel1.BringToFront();
SetMainMenuButtonCilkeColor("btn_editRole");
+
+ if (GlobalData.GetProperty("Language") == "Chinese")
+ {
+ SetLanguage("zh-CN");
+ }
+ else
+ {
+ SetLanguage("en-US");
+ }
}
+ #region 中英文切换模块
+ ResourceManager resourceManager;
+ private void SetLanguage(string cultureCode)
+ {
+ resourceManager = new ResourceManager("PBAnaly.Properties.Resources", typeof(MainForm).Assembly);
+
+ // 设置当前线程的文化信息
+ Thread.CurrentThread.CurrentUICulture = new CultureInfo(cultureCode);
+
+ // 更新所有控件的文本
+ UpdateControlsText();
+ }
+
+ // 更新所有控件的文本
+ private void UpdateControlsText()
+ {
+ //// 遍历所有控件并更新文本
+ foreach (Control control in this.Controls)
+ {
+ UpdateControlText(control);
+ }
+ }
+ // 更新单个控件的文本
+ private void UpdateControlText(Control control)
+ {
+ //// 直接通过控件的 Name 属性获取资源字符串
+ string resourceText = resourceManager.GetString(control.Name);
+ if (!string.IsNullOrEmpty(resourceText))
+ {
+ control.Text = resourceText;
+ }
+
+ // 如果控件包含子控件,则递归更新子控件
+ foreach (Control subControl in control.Controls)
+ {
+ UpdateControlText(subControl);
+ }
+ }
+ #endregion
+
#region InitUser 加载全部的用户 root除外
///
/// 加载全部的用户 root除外
diff --git a/src/PBAnaly/MainForm.Designer.cs b/src/PBAnaly/MainForm.Designer.cs
index e0ce7bb..2ecc3fc 100644
--- a/src/PBAnaly/MainForm.Designer.cs
+++ b/src/PBAnaly/MainForm.Designer.cs
@@ -85,7 +85,7 @@
this.metroPanel_RightTop.Location = new System.Drawing.Point(210, 0);
this.metroPanel_RightTop.Margin = new System.Windows.Forms.Padding(0);
this.metroPanel_RightTop.Name = "metroPanel_RightTop";
- this.metroPanel_RightTop.Size = new System.Drawing.Size(569, 55);
+ this.metroPanel_RightTop.Size = new System.Drawing.Size(652, 55);
this.metroPanel_RightTop.TabIndex = 12;
this.metroPanel_RightTop.Theme = MetroFramework.MetroThemeStyle.Dark;
this.metroPanel_RightTop.UseCustomBackColor = true;
@@ -228,7 +228,7 @@
this.tableLayoutPanel1.ColumnCount = 3;
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 210F));
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
- this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 318F));
+ this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 235F));
this.tableLayoutPanel1.Controls.Add(this.tl_right_main_view, 1, 2);
this.tableLayoutPanel1.Controls.Add(this.metroPanel_RightTop, 1, 0);
this.tableLayoutPanel1.Controls.Add(this.CompanyIcon_pictureBox, 0, 0);
@@ -259,7 +259,7 @@
this.tl_right_main_view.RowCount = 2;
this.tl_right_main_view.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.tl_right_main_view.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
- this.tl_right_main_view.Size = new System.Drawing.Size(569, 495);
+ this.tl_right_main_view.Size = new System.Drawing.Size(652, 495);
this.tl_right_main_view.TabIndex = 0;
//
// DataProcess_panel
@@ -272,7 +272,7 @@
this.DataProcess_panel.Name = "DataProcess_panel";
this.DataProcess_panel.Padding = new System.Windows.Forms.Padding(5);
this.tl_right_main_view.SetRowSpan(this.DataProcess_panel, 2);
- this.DataProcess_panel.Size = new System.Drawing.Size(563, 489);
+ this.DataProcess_panel.Size = new System.Drawing.Size(646, 489);
this.DataProcess_panel.SmoothingType = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
this.DataProcess_panel.TabIndex = 19;
this.DataProcess_panel.Text = "panel1";
@@ -448,7 +448,7 @@
this.flowLayoutPanel2.Location = new System.Drawing.Point(210, 55);
this.flowLayoutPanel2.Margin = new System.Windows.Forms.Padding(0);
this.flowLayoutPanel2.Name = "flowLayoutPanel2";
- this.flowLayoutPanel2.Size = new System.Drawing.Size(569, 31);
+ this.flowLayoutPanel2.Size = new System.Drawing.Size(652, 31);
this.flowLayoutPanel2.TabIndex = 19;
//
// materialButton_changeFormSize
@@ -623,7 +623,7 @@
this.materialButton_return.Depth = 0;
this.materialButton_return.HighEmphasis = true;
this.materialButton_return.Icon = ((System.Drawing.Image)(resources.GetObject("materialButton_return.Icon")));
- this.materialButton_return.Location = new System.Drawing.Point(0, 36);
+ this.materialButton_return.Location = new System.Drawing.Point(512, 0);
this.materialButton_return.Margin = new System.Windows.Forms.Padding(0);
this.materialButton_return.MouseState = MaterialSkin.MouseState.HOVER;
this.materialButton_return.Name = "materialButton_return";
@@ -641,12 +641,12 @@
this.pl_right.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(39)))), ((int)(((byte)(51)))), ((int)(((byte)(63)))));
this.pl_right.Dock = System.Windows.Forms.DockStyle.Fill;
this.pl_right.EdgeColor = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(41)))), ((int)(((byte)(50)))));
- this.pl_right.Location = new System.Drawing.Point(781, 57);
+ this.pl_right.Location = new System.Drawing.Point(864, 57);
this.pl_right.Margin = new System.Windows.Forms.Padding(2);
this.pl_right.Name = "pl_right";
this.pl_right.Padding = new System.Windows.Forms.Padding(4);
this.tableLayoutPanel1.SetRowSpan(this.pl_right, 2);
- this.pl_right.Size = new System.Drawing.Size(314, 522);
+ this.pl_right.Size = new System.Drawing.Size(231, 522);
this.pl_right.SmoothingType = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
this.pl_right.TabIndex = 20;
this.pl_right.Text = "panel1";
diff --git a/src/PBAnaly/MainForm.cs b/src/PBAnaly/MainForm.cs
index b9f65e8..2bf1534 100644
--- a/src/PBAnaly/MainForm.cs
+++ b/src/PBAnaly/MainForm.cs
@@ -12,8 +12,10 @@ using System;
using System.Collections.Generic;
using System.Data;
using System.Drawing;
+using System.Globalization;
using System.IO;
using System.Linq;
+using System.Resources;
using System.Threading;
using System.Windows.Forms;
using System.Xml.Linq;
@@ -79,6 +81,7 @@ namespace PBAnaly
loginForm.Hide();
+ GlobalData.PropertyChanged += OnGlobalDataPropertyChanged;
UserManage.LogionUserChanged += OnLogionUserChanged;
InitAccessControls();
@@ -89,10 +92,87 @@ namespace PBAnaly
FormGenerate_X = 0;
FormGenerate_Y = 0;
+
+ if (GlobalData.GetProperty("Language") == "Chinese")
+ {
+ SetLanguage("zh-CN");
+ }
+ else
+ {
+ SetLanguage("en-US");
+ }
// initPanel();
}
+ #region OnGlobalDataPropertyChanged 处理全局属性更改事件
+ ///
+ /// 处理全局属性更改事件
+ ///
+ /// 发生变化的属性名
+ /// 更改的属性值
+ private void OnGlobalDataPropertyChanged(string name, string value)
+ {
+ switch (name)
+ {
+ case "Language":
+ if (GlobalData.GetProperty("Language") == "Chinese")
+ {
+ SetLanguage("zh-CN");
+ }
+ else
+ {
+ SetLanguage("en-US");
+ }
+ break;
+ default:
+ break;
+ }
+ }
+
+ #endregion
+
+ #region 中英文切换
+ ResourceManager resourceManager;
+ private void SetLanguage(string cultureCode)
+ {
+ resourceManager = new ResourceManager("PBAnaly.Properties.Resources", typeof(MainForm).Assembly);
+
+ // 设置当前线程的文化信息
+ Thread.CurrentThread.CurrentUICulture = new CultureInfo(cultureCode);
+
+ // 更新所有控件的文本
+ UpdateControlsText();
+ }
+
+ // 更新所有控件的文本
+ private void UpdateControlsText()
+ {
+ //// 遍历所有控件并更新文本
+ foreach (Control control in this.Controls)
+ {
+ UpdateControlText(control);
+ }
+ }
+ // 更新单个控件的文本
+ private void UpdateControlText(Control control)
+ {
+ //// 直接通过控件的 Name 属性获取资源字符串
+ string resourceText = resourceManager.GetString(control.Name);
+ if (!string.IsNullOrEmpty(resourceText))
+ {
+ control.Text = resourceText;
+ }
+
+ // 如果控件包含子控件,则递归更新子控件
+ foreach (Control subControl in control.Controls)
+ {
+ UpdateControlText(subControl);
+ }
+ }
+
+ #endregion
+
#region 重新梳理权限控制,控件的权限可通过管理员进行配置
///
/// 用于权限控制,将所有要管控的控件保存到mControls中
@@ -351,8 +431,6 @@ namespace PBAnaly
#endregion
-
-
[System.Runtime.InteropServices.DllImport("user32.dll")]
private static extern int SendMessage(IntPtr hWnd, int wMsg, bool wParam, int lParm);
private const int WM_SETREDRAW = 11;
@@ -382,7 +460,17 @@ namespace PBAnaly
if (sender is Button)
{
Button btn = sender as Button;
- this.btnStartUpToolTip.SetToolTip(btn, "适配窗口");
+
+ if (GlobalData.GetProperty("Language") == "Chinese")
+ {
+ this.btnStartUpToolTip.SetToolTip(btn, "适配窗口");
+ }
+ else
+ {
+ this.btnStartUpToolTip.SetToolTip(btn, "Adaptation window");
+ }
+
+
}
}
@@ -391,7 +479,16 @@ namespace PBAnaly
if (sender is Button)
{
Button btn = sender as Button;
- this.btnStartUpToolTip.SetToolTip(btn, "图像变换");
+
+ if (GlobalData.GetProperty("Language") == "Chinese")
+ {
+ this.btnStartUpToolTip.SetToolTip(btn, "图像变换");
+ }
+ else
+ {
+ this.btnStartUpToolTip.SetToolTip(btn, "Image transformation");
+ }
+
}
}
@@ -400,7 +497,15 @@ namespace PBAnaly
if (sender is Button)
{
Button btn = sender as Button;
- this.btnStartUpToolTip.SetToolTip(btn, "伪彩");
+ if (GlobalData.GetProperty("Language") == "Chinese")
+ {
+ this.btnStartUpToolTip.SetToolTip(btn, "伪彩");
+ }
+ else
+ {
+ this.btnStartUpToolTip.SetToolTip(btn, "Image transformation");
+ }
+
}
}
@@ -409,7 +514,15 @@ namespace PBAnaly
if (sender is Button)
{
Button btn = sender as Button;
- this.btnStartUpToolTip.SetToolTip(btn, "图像信息");
+ if (GlobalData.GetProperty("Language") == "Chinese")
+ {
+ this.btnStartUpToolTip.SetToolTip(btn, "图像信息");
+ }
+ else
+ {
+ this.btnStartUpToolTip.SetToolTip(btn, "Image information");
+ }
+
}
}
@@ -418,7 +531,15 @@ namespace PBAnaly
if (sender is Button)
{
Button btn = sender as Button;
- this.btnStartUpToolTip.SetToolTip(btn, "重置原图");
+ if (GlobalData.GetProperty("Language") == "Chinese")
+ {
+ this.btnStartUpToolTip.SetToolTip(btn, "重置原图");
+ }
+ else
+ {
+ this.btnStartUpToolTip.SetToolTip(btn, "Reset artwork");
+ }
+
}
}
@@ -427,7 +548,15 @@ namespace PBAnaly
if (sender is Button)
{
Button btn = sender as Button;
- this.btnStartUpToolTip.SetToolTip(btn, "反值");
+ if (GlobalData.GetProperty("Language") == "Chinese")
+ {
+ this.btnStartUpToolTip.SetToolTip(btn, "反值");
+ }
+ else
+ {
+ this.btnStartUpToolTip.SetToolTip(btn, "Inverse value");
+ }
+
}
}
@@ -436,7 +565,15 @@ namespace PBAnaly
if (sender is Button)
{
Button btn = sender as Button;
- this.btnStartUpToolTip.SetToolTip(btn, "Ctrl + S 保存");
+ if (GlobalData.GetProperty("Language") == "Chinese")
+ {
+ this.btnStartUpToolTip.SetToolTip(btn, "Ctrl + S 保存");
+ }
+ else
+ {
+ this.btnStartUpToolTip.SetToolTip(btn, "Ctrl + S save");
+ }
+
}
}
@@ -445,7 +582,15 @@ namespace PBAnaly
if (sender is Button)
{
Button btn = sender as Button;
- this.btnStartUpToolTip.SetToolTip(btn, "Ctrl + Z 撤銷");
+ if (GlobalData.GetProperty("Language") == "Chinese")
+ {
+ this.btnStartUpToolTip.SetToolTip(btn, "Ctrl + Z 撤銷");
+ }
+ else
+ {
+ this.btnStartUpToolTip.SetToolTip(btn, "Ctrl + Z revocation");
+ }
+
}
}
@@ -454,7 +599,15 @@ namespace PBAnaly
if (sender is Button)
{
Button btn = sender as Button;
- this.btnStartUpToolTip.SetToolTip(btn, "Ctrl + Y 重做");
+ if (GlobalData.GetProperty("Language") == "Chinese")
+ {
+ this.btnStartUpToolTip.SetToolTip(btn, "Ctrl + Y 重做");
+ }
+ else
+ {
+ this.btnStartUpToolTip.SetToolTip(btn, "Ctrl + Y renewal");
+ }
+
}
}
@@ -954,5 +1107,7 @@ namespace PBAnaly
{
}
+
+
}
}
diff --git a/src/PBAnaly/MainForm.resx b/src/PBAnaly/MainForm.resx
index 09b4447..e7d403f 100644
--- a/src/PBAnaly/MainForm.resx
+++ b/src/PBAnaly/MainForm.resx
@@ -563,6 +563,455 @@
17, 17
+
+
+ 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
+ Y8xOY6+9fghokNfA1CcF5wAAAABJRU5ErkJggg==
+
+
+
+
+ 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
@@ -1292,455 +1741,6 @@
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
-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
- Y8xOY6+9fghokNfA1CcF5wAAAABJRU5ErkJggg==
-
-
-
-
- iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACtWK6eAAAABGdBTUEAALGPC/xhBQAADnVJREFUeF7t
- nX+oJWUZx6UszczE1IoIo8R+EKiolEZSYqYhYaGSZT81kaUl1133zpy7fwy4npm5d13jiu49M3PvXUXT
- lkyyNNJELDSSMDFJNglTE9M0Y0GlNqjnPfts3jvnO++ZX+8557bfD3zZ5Z7ned7nnPN+5/eZ2Y8QQggh
- hBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEJWF+u39A73wuR0P0o2eGEvoKim6oTZ
- uqkoOWVNcN3BOs1WH36cXuRH6aOi/1CUI/3Li9IHOlH2ZZ12qwMvSraCN0NRLnWbTr/JBjROUSOTTsPJ
- xA+Tn6OmKWpUMlsvOh0nC9kJvxw1TFEjl+z/6rScHMQgj8BmKWr0elSn5WQQbM0OA01S1NhkTi/o9Bw/
- U1F2KmqSosYlc+5Np+f44f4HNXlKNuj0HD/m7CZucqXyZ0Qpqo7Q3MrLxOn0HD9lm9ZwQmrjhemn0NzK
- iwYh+yQ0CCEWaBBCLNAghFigQQixQIMQYoEGIcQCDUKIBRqEEAs0CCEWaBBCLNAghFigQQixQIMQYoEG
- IcQCDUKIBRqEEAs0CCEWaBBCLNAghFigQQixQIMQYoEGIcQCDUKIBRqEEAs0CCEWaBBCLNAghFigQQix
- QIMQYoEGIcQCDUKIBRpkHyEIegd14vQz+tnN+WF6kxdld3Wi9Efy9y1enK3xZrIzN8ze+FZNGSmb4oUP
- dsLsW50wuU76u0/0gh+nL8u/v/Oj7Hb59xovzM4LgqVDNWUk0CAO8eLkUunDfNmF0lAnyIQ6uhMla40R
- ZKxXRPBzGlCc3imTcsN0vHCilnKC302OEXNuFpP+AfZRqOx2L0zWrAuyw7SUM2gQR6wJrjtYevh7vqe8
- NLxV/C2LH/GjxCx14ZgVdbOY7LNauhV0bbZNenwVjFdaXpQ+K2a5eipaOFZLtw4N4ggZ//p8P0ga3hqy
- 9L9IJs1zaKyGynSIRkxfvfheqfXbXO2Gyl6UtdDXdIhWoUEcMBUlp6B+kDSlFcp+Lg30mA5Vi7KTra5k
- s8vXoVqDBnGAbJL8EPWDpCmN2bPJgsdoV9mTOmQlXJtjr8yBCB2yFWiQlpEJtAH1UiRNa0Qnykobsh1l
- G3XoUkxvzo6SvCcG67iRF2bH69CNoUFaxGwHoz5s0tTayGbFFKrrXDPJ2drCUMRQCazhSPI93KFDN4YG
- aQlZap2JehgmTa9FZyY5TmrsytcchcpOQj9Oz0X5zlXBwDZokBaQD/EEL0r/hnoYJi1RC8m/OV+vgp6R
- Jfsj8m99g5WYhH6YPARz7XpVNhvv1+/ZnC9CMVa1tRahQRrid5Oz5cuoeKLrdWmZysiS+Yuo3hA90wmz
- dcbQWqaPF257n2yqfUFe35mLt2rYJJTv6QyUZ9Fjfrd3jjmHpCX6BLPbjvSjpNK+ndHGOP2wlqgNDdIA
- cxYYjVtFWqoyMjkfQPUKFac71ge9wzW9EFlyL8B8qGS33108QlMHkNfncR5UVuYyEokrfQ5FTP8NTasN
- DVIDvzt/stS/Nz9eHWnJSkxF6YWoVpFk8+8GTS2FmOmbqA6SN5NeoGkr8Ls3vENefyEfj5X8QNOGcsVM
- 7wO4BtT1mlYbGqQiZhOl6SUSy6VlKyET+E5Uq0B/1bRKSN49uTpQZo2jKSswS28UP6hkt7clOUnTSiGT
- ttQ5H1nL/lpTakODlEQ+qAtkSVxts6aEtHxpOvHCp1GdQnWTr2pqJcwOOKw3oOwRTVmBH6a34viVEiNF
- mlIaWUhdjGoBPacptaFBhtCJFs6SWrWOpJSRDlMab2bhDFmD3IRqAdW+fspcaQvqIe3SlP9hdvrFIE+D
- 2AGZy9w1rTRVLuWR/ZoDNa0WNEgB+sE4M8Ze6XCV2TSzXbbFk01elP0R1TUy70HDKxME9+0vNXbna0Ll
- dtT9bu9D8nfPbOIMxK7UE5pSCb1SGtUblPSiabWgQQpA9VxIh6vN2rm5A2QiXiibf3esqB2nP9OQ2sjm
- 05Mrahapu/gxTYGYHzpJrVsk9rVc7pyGVMIcvs3VKdaQ3oZBgxSA6rmQDtcK5svUX+S90ImSL+mfayN1
- Sq1BO1clx2nKUMxvVfT7e0x6PEv/XInyBwBElsPQZaBBCkD1SilMX5EP9RL4GpAO1ypm80v/2wjp79l8
- v0jTm7e9R1NGghclW1EfQAP7R1WhQQpA9YZJNnPulw+0f5YavY7UH2wCMUte1C9Sr9d7k6aNBBnz7nwP
- WPgIWxVokAJQPbuSqzW1D44ZlIZPHP5M9gnUb16yUHheU0aCubED6qNAtfZxlkODFIDqFehu9CMdEAel
- 4ROHvKce6ndAYfp7TXGOuVRGxnxpoIcidXuNdtANNEgBqN4KhenTXpx9R8MHgDlAGj5RmM1E1CtUnP5E
- 05zihYunDxyps8hcDaypjaBBCkD1VE904swPZpbepaEQkAel4RNF6bWHyBzC1bTWMSf5zElBmexLaGyb
- 2jiKZ6BBCgD1HpYPfW2QuxS7CJAPpeETg3y25S9Rj7MHNa025rvMSwy6TU8y5s+blJIXJpdq+cbQIAVo
- jedk53u+zq/Tlvdhk4ZPBJ2r0ndKT3/K91ikNiZi2e+yrGQzrNKVy8OgQQowq+gmt+FE/SBp+EQg/ZS6
- gle1c93WHW/R1Nq0bJBW7t21HBrEEagfJA0fO1X2O4xk4kxraiNaMsjOot+lNIUGcQTqB0nDx4ofZVei
- 3goVp78Mer2DNL0RLRhkl2wGX67lWocGcQTqB0nDx4b0MJfvaZjavKl1CwbpS/Y97jWTWcu2Bg3iCNQP
- koaPBT9Mt6OebOq0fA/ctgzyupJZLd0KNIgjUD9IGj5yZCJVv/t7mNyo6a3RvkH6Jm7tSBYN4gjUD5KG
- jxQZt9YNJzS9VVwYRNX4OiwDDeII1A+Sho8M2VavdQ+v6XjeycN09LvsP0wI6HER7KeMvDDp6jC1oUEc
- gfpB0vCR4O95pBnsw6bObPZRLTFygmuWDpVJelonTNdLL6V+n7Jc6ELSKtAgjkD9IGm4U4LZG49EY5fQ
- LnNXQy0zdqai3ttl/6L0BYt9hel2Ta8FDeII1A+ShjvD/BwWjVtCj2uJicPvpp8D/ULJJuW/zc98NbUy
- NIgjUD9IGu6Esj96AvqFlphY/AqPVOg02BehQRyB+kHS8NaZiuaPReMNU9sX+7mif8PtknfUl82y32ha
- ZWgQR6B+kDS8Vbxw8f1S+5/5sYYruVJLrApk/6LsDfT+oimVoUEcgfpB0vDW2NB/VEDJ+1ktk/mtt5ZY
- NUjfXv59FCkIdrxZ0ypBgzgC9YOk4a1gLj+XpeqDaBybZBKcpiVWFeZnuOj9IJlNMk2rBA3iCNQPkoa3
- QqfGwzzN5pimOyXYmh3mxclXdLPopWDupkP0pdqsDeYOyb+fQs0unKxplaBBHIH6QdLwxnhxOo3qW/RU
- EARv0PTWMYaQnWPzHJPbcuPuUZyeq6G16VzTezesDbSp5tOmaBBHoH6QNLwR3ky1B4jKmuZXmto6Fe6b
- u6gptalyGLvur0NpEEegfpA0vDZ77oDYfxgnrA/U+JkZwwBjIv3jvB073qgptdA1FKqdU/aiplSGBnEE
- 6gdJw2tjnvCE6hap7tGcKsg45Z4jGCef15RaSI2yR7Ee1pTK0CCOQP0gaXgtvDhbg2oWquaOalW8KCll
- WlkDNLq5m9QoZ8Qw/b6mVIYGcQTqB0nDK3PFlf2HWT6fr1ekNu8VNQxzx0nUA1InSr6raZWQiVv6DvoS
- u17TKkODOAL1g6ThlfHD5FpUr0Chpo2E6c3ZUTJmuZu+xenTMglXPLe9DLBWgcwk17TK0CCOQP0gaXgl
- /G76SVQLK7tF00aKTPwduB+ssms42ef6HsovlBhwY7zwNk2vDA3iCNQPkoZXQvLwuYUxSdtagXm6Loq1
- yVwoKRPykv6k7C4eEQRLh/Yv1+/2zpGFwmXm8DTKs6nuJtxeaBBHoH6QNLw0nWjhfFRnnNLWBpAJ/VMU
- Pyo1PQhgoEEcgfpB0vDSyFJ22JNjRy5tbQC/u3CyHyXlnpTrQg0PIxtoEEegfpA0vDSoxrilrUHKflft
- K/m2ttAIGsQRqB8kDS8NqjFuaWuFyI7yrSjPlczJUx26MTSII1A/SBpeGlRj3NLWrEicuY0PzG9TYo4l
- HbIVaBBHoH6QNLw0qMa4pa0NRdYkl6H8VhSnf25rs2o5NIgjUD9IGl4aVGPc0tZK0b/AsD+Zca0aMjeX
- 864Y8ki8utAgjkD9IGl4aVCNcUtbK405cWeW9pJb6xaoopfEZDvMyUXzHEMt6wQaZJVhvrBJk7ZWC7+b
- HGMeftOJ0y3yncl+Sv/S/adEu0TmcpWdonvMjnf/e+/Oj+SCy72Y9yfjw/m1XDQI2SehQQixQIMQYoEG
- IcQCDUKIBRqEEAs0CCEWaBBCLNAghFigQQixQIMQYoEGIcQCDUKIBRqEEAs0CCEWaBBCLNAghFigQQix
- QIMQYoEGIcQCDUKIBRqEEAs0CCEWaBBCLNAghFigQQixQIMQYoEGIcQCDUKIBRqEEAs0CCEWaBBCLNAg
- hFigQQixQIMQYoEGIcQCDUKIhf9rg5g4imoqNLfyMnE6PcdPJ8wuRk1S1Lhkntmu03P8yGrvBNQkRY1L
- G+P04zo9x8/aubkD/Ch5FTVKUWPQa0GwdKBOz8nAi9IHQKMUNXJ1ZC7qtJwc/Dg9FzVLUaPWVDR/qk7L
- ycIPk2tRwxQ1MnV7X9fpOJn4YfZj2DhFOZYXZXfpNJxsOlFyPnoDFOVIL8ucW6vTb3XgbUlO8qNkXja7
- HpJ/d4M3RVFN9Irobj/KZr0wO1qn3eokCIL9p+P5E81lAhTVXNnxOrUIIYQQQgghhBBCCCGEEEIIIYQQ
- QgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEII2QfYb7//ApKrjfJpixBWAAAAAElFTkSuQmCC
-
-
-
-
- iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACtWK6eAAAABGdBTUEAALGPC/xhBQAAGdlJREFUeF7t
- nQn0HVV9xzlF7WItaInB5L259848EkhdkNCmtdSmxaICpwoUsSw9LFUbWhU52KK1hx6pYFVCUcGFQMSy
- HRaRCAgIVUmhaElTNIc2DRUQLJshLEHKckq/v5nfvP+beb/Z3pt5y//9Pud8T/5573fvnTfzu3P3e3dQ
- FEVRFEVRFEVRFEVRFEVRFEVRFEVRFEVRFEVRFEVRFEVRFEVRFEVRlNrpdDo/b619q/Pce5wxpzprL3DG
- fjv6F//H5/Q9THeMQijKPMcY43xjjoUu8419saSe8z27FhnmXZ7nvZKjUpT5Q+B5y1EyfElw/koKjP0J
- MsvfIqO9hqNWlOnFb/mvqyNjpBVnlOXLl7+Uk1KU6QLth5Vw5vvSzl2vzHotTZSpgzOH4NCNaKtz7vWc
- tKJMNoExbxKcuHEhU67gS1CUyaTjecsk583RRrQlzgw8+4HA2sOo5KF/6f9ou5yFtsZdQphMaXVLmVii
- zOGekhy3X+7zqBYt5aC5UMmAMJf0xyHq9oULF76cgyrKZEBvbjjnppSzSnoIJcTRHKwSCPduNMp/KMSZ
- krmcgyjKZEBdrrKz9soN7bhLFi3aBfHcJMc/J+e5IzmIoowXKj3CcQnBUedk9mfzWkCGPF1Op6sNNJWF
- zRVlfBSXHm4Nm9YK4r6oP60eWXsymyrK+EDpsEV00EjbmhrtRuPdIvPdL6TJMlvYVFHGg+95+8rOGSkw
- 5iA2bYTAuJOkdLvC9bGpooweOOHqPqec03ls1hjLli17GdLZkEq3V6vZVFFGDxxwc8ohu3KeO5TNGgVp
- 5WXSzWymKKPF9/2dBIfsaunSpa9g06FZ0motplF26ublj7r4nn+glH4s7c1SxgJNZZcckkQrA9lsaPp6
- yfB//qpL4vuUgiB4NZspyujwjTlAckiS8+ylbDYUWWtJ0tU3fPZQ2qYr39+NzRRldPjWrhIdEqKJhmw2
- FIhLbOMExnyVTULw2Z1pm67a/t5spiijgwbiRIeEAuM+wWYDgzbHzlLckdw1bBaCz27tt2F5/j5spiij
- A1Wsw0WHDDX86DlNT5Hjhjx7OpuF4LO7+2xioa3EZooyOujNLDpkqOQbfhAQT87sYHM4m4Ugvexp9r7v
- sZmijA5yPNEhSZ79MZuVJu7KRdXtQ4hja1+cveopFYJW0BFtYvn+TmyqKKNFdEgWnH0FmxVSPOFxToFn
- r+dgIYHn3i/ZxWIzRRk9qNpcKDllKGG8QqLqtkC0cpGDhuCz69I2c3IXspmijB60BQ6RHTPU0x1j3sim
- mcAuc7pKWn3jHwWj6HR9bKooo6fT6fwKHDGvvXAJm2YCm22pMKKcsd/kIF3QXlkn2bK20vWxqaKMh6Iq
- Ek1JZ1ORAieH3PNSHMXtFnc2myrK+KB9d2UHnVMQBG02F4GN1KX7pPPs11FN24vNuqDqdIRg36tHOu12
- wOaKMl7KNLSttXuyuQhKiQ+Hxx8Y89fU3bto0aJf4q8SuLbbT4o/IV1uq0wSZUqRUNaewEEGwhWtIIyk
- GzYokwcP8EkOm5S1t1TtXQo8+16EvaMvLkmefyAHU5TJAg3jNaLTykK7g+zNIbT5NLSQ4qB/w/977lB8
- 94+wuzcVLlN1TJJUlEZBw/p6yXlHoKv4EhRlskFD+7OCA4tCw1z43GV8LktLDmXq4HaD6NA16tmOte/g
- JBVluqCjDODEZTa1riyatOi327paUJluwuko0aj3E2knH1CbUIU7jqNXlPkBzcKN2ia5W5XmaQNlNJ1f
- pcx7wtWI4Q7tZr2QEXpk1gfGnKpVKWVmkTNGJDZRlNlFyhix2ERRZhcpY8RiE0WZXaSMEYtNFGV2kTJG
- LDZRlNlFyhix2ERRZhcpY8RiE0WZXaSMEYtNFGV2kTJGLDZRlNlFyhix2ERRZhcpY8RiE0WZXaSMEYtN
- FGV2kTJGLDZRlNlFyhix2ERRZhcpY8RiE0WZXaSMEYtNFGV2kTJGLDZRlNli+fLlLzXGvIY2iJMyRiz6
- nuzInoMqyvxkabu9yBn3p75xN0mZoVDW3uA8d1Sr1XoVR6ko0w0dQeAbc3xg7dWi0w8sOvrNHKGZRZlK
- Op73a3Dis2Xnrk+BsT+hnU6oGsZJK8rk4nmeHxj3GTjv02lnblKaUZSJhs7jcMZ83Bn7U8mBR6U4o+CS
- XhJdmaKMGWpnwDG/Izns+OS+pe0TZezQUWlwyAf7HbScwjd+eDCOuRa62bWR0ay9AZ/h//bf8dmjse0A
- 2owql+NLVZTR4jx3pOCU+fLs96DTfM/bl6MpBJlw58DadyLcmYhjY1+c+XrGOfcGjkpRRgPe8icLzpil
- rWH7xLmlHHwokGF2DzOZsT9LpZMppP1mDq4ozRK+zQUnFPQstDpotToctFaoZEBGWZtKM1PUw8ZBFaUZ
- Osa8UXK+tJxnLx1V1QYZ9m1Ic0P6GiSh9NmVgylKvQRB0IaTbUs7XVqBcedykJHh+/5OSJsa9uI19ehO
- PT5BqR061B/tjhsFh0uo6KxA6vWiU6cCz34A7ZKPoqH/Hqqy0dkhbDIUqHJ9UbquhKxdp5MflVoJjDlX
- dLYedax9K5snoHPLo7lTdms6TEqbqKcqaAev5aAD4RuzvxB3Qs7aL7G5ogwHj3WIjhYLpcDRbN4lzBh4
- W0v2BdpOJRGNznNUlaHrEeJNKPC85WyuKIMDZ7oy7VwJefY0Nu2CqtOhom01bUTbYjeOsjLcFSzFG0pL
- EWVoUF05WHKuWM7Yb7JpFzgmHdgp2g+iYd70dH1SnLG0FFGGAg72bcmxWM92jNmLTUNQpTpGsBtaSxYt
- 2oWTqARdH8LTeIwYr5YiysBEq/9kxwpl7d+zaQjaKnvi88Ju4EEUePZqTqYydJ1SnLG0FFEGwjfuGsmh
- WPem117gbXyBYCdpE6pulzljPoW/aezinp7vsuXZD3JSlaDrRPh7++JjBcb9DZsqSjk6nc4COM9zaWfq
- ytoT2DSER7NlWxZV11DKrOAgCZBZ/hw22elF+lEQBK/mIJWg6xXiY5n1bKYo5SjoJv0Rm3XBZ+enbJKK
- FjEVEhj7L2J4VuC597NpZZAR7pfiJCHjWjZTlGKoCiQ5EokGDdmsCz5/JG0XC05/F5sV4nneK6U4enQd
- m1Ym7zfhu+PZTFGKgdM83u9EkWiMg81CigYSs0bYs0B1aJUUTyw2qwzi/ZAUH+taNlOUfAocfjubdSkY
- FNzEZqXxfX+JEE9X1D5i00rQfC8pvlhspij5oJ7/J5IDRTKXsVkXqp7ItqR++zL4xj0qx4cMMsTERlxP
- ZjvEOWfYTFGyoW5PyYEimRPZrEvuyHnJxnmavAFKKuHYrDKoZmXODXNt9ztspijZ4O29RnIgUmDtYWzW
- BU73Z5It62tsVgmEyxxwNMbswWaVQYb9ghQnidbYs1kjLFuw4JfpXjlrzwoXlIUvAeo4cGfTi4TW27Cp
- MsngIWav+/D8fdisS2DMQaJtpLvZrDQoIWhEXoorFPV0sWllUDp+TIqTROtT2KxWaKQ+ypjuKSndlC6h
- WdAcVJlE8JA2px5aV9K67qLGLw0CsmkpaKq7FA9rK5sNBDJ/5lyxuudl0X2hOKW0CkVVQc0okwke0DN9
- D4yVtUYD321K2/boOTYrhBZLCeF75C5k04FAQ3w/OV6qYtnr2WxoopeG2SKlU0kDtuGUBsGDeajvQbF2
- X7z4V9ksAR4k7VklhiHRCHlR1QhVtbdLYZMyR7D5QCD8IXK8YQa5lM2GomhcqLI0k0wWeCDfEx8UqeW/
- js0ShPVsyT4ta1fRVqUcLARv9deXrIrcwUEGxhn3F0K8oXANX4HJjpHlYNSeOVjpwVlljOAte7n0kEhU
- RWGzPirWtx9AZvk+/t2e+jxTgWffy0kNDDJ/7ipD6P+csf+Gf8+njSVQqv1e2QmSncWLWwh3d09ctcq1
- 3R9yUso4QSOZji8QH5K09jyGSgLYZFbPhtNgA45p4Py5KwyzhHD/jX+vRAY7BW/zP5K6mp0xn06HE0Td
- 1xfh5XByVNqY4xEndT3f2WOTIXcTJ6WME3pzyg8IsvYjbCbSTBXDbOHoh8b3TG1veGQaOurhZmSMz3LP
- W9F0/auyNtNutVq/SG0gIUxCtIiNgyjjomPtO6SHE6n4LYZMskIOO5Du4WhrAW/rzOW39cgJn4Wfl+p9
- K1pXg+8HXlmp1ASvwBMfEIm+Z9NMeGwkr+u3WJ5dy9HVQuB5vy2m07zu5UsoRUFVrW+yqDIGuAEtPaDS
- jeUwo9EUiugMEDEuUdbeQt2xHE1t5I2iNytzMF9CKbixn3mEHVVj2XQ2wA8maEvOo8mh4CAn0N/QO+lz
- mAzV9TgIcKa8CYvfYrNSUEahlYAIe11/XF09gmrI2fjNfXO96gJp/FMqzTlZR7MHGjlX0Tm3kC+hNNyT
- JsbX5D2aCHzf95AJVsEh8jZFmJNnnqfeF3oD5nWz1km4K6J0LbHa/q+zaWXIYajHKzDmTbQxHF4CO/NX
- jUHXK/6OSI+tXLnyJTRLgMZznOeOwovqNDSav47vMqfdlNQTfAmVQLiLU/F0RZ0obDa/8Nvtvfmmiz+8
- tMLJhOZwjrZWovMG3d8hnQf60u0RHtJtHGQqwH3/ivQ7WBezmQjtHE/tF7y534dM/TnYU0lU8tg5s4Gj
- qQSeQWZXe1OTKscKnPoj+HF1F+G3I95jOImhoHM/qLsScT6ZSiNTNIjGwScauk7p+mOR47NpJVDy7YqS
- 9i2In14oiThR4sd/D9Sojl6CyThj4Tkdx2bTD6oSb8CPyq771iJ3BSdXGTzk3y14u+Zo8HRHCV2nfP2Q
- Z39Mjs6mAxGu85DiZlF1kk1LQ9clxRXJHMBm0w3eLvvgBz3c/wMb0TN40Cs46UJo2gLCfC0VR0nN9fXT
- qDJHOZHQ9SWvPSVrT2bToUBcmW2VqtPokQEyJ1SS8Jynf4sidkDxBzYq3/f4EkTgMEfCwW8Sww6mn6GK
- 8fsc/URB10XXl7reXm1Gw7yW06YQ1+pU3AnhWt7OpoXAPnO5ATLPD9lsekHx+EH5x2XqcbzJ1sFxz6D6
- ZdiDFHX3rqs8hmDc/elp5TSNATf2eMSXObYxpB6etBOb6HroulLXmdSAW5lK4MVTeNxD0cFAS1qtxbDL
- n5Nl7T+w+XRSvOAnoWupgVg0Mk1TzCnDlM4syFgItiPVrfE3Hdf8n302pWUud55HDz93VJwm80VXOxnQ
- 9UjX2aONdWdq3OtbhHQSCoz7BJ7LnhwkhHsOPyzZp7R92NO3xk7JtzQc1hzLQUpTZWQaNrfh3/9Jf15S
- z6FK8GXq2uSk6Q15lGCXEJxyErp+d8S1lDjxdriFVxKIM7ftkNI23C/auSVzR8q0KHNxUtNJWC0SflhC
- nl076FkXMXgD7Y4MkLuH7YB6GFW8T2XtO4Xvc+vZrM3IyOKM1aahwUBc/9M9XayiYPNxDlI7eL6Zu6YM
- p3qm+48N3lM2c4t9Ejkfmw/NkkVLdoEjzK1t8JJpVdRmXNtH2+32Io4+E37rSXF0BZufour4Ng4yEjpl
- Xk4QTSnnII1R5h5V1FAbVUwEyOEnCj9sTjXPTI1BuuvF9MqIltZau4qOeOboSoGwmfv2JuU+n1Ua1UU4
- QzdnM7iUNnKwxsELhwZdpWuoqsrbJk0iO+Ih/UD4cbHuaarvGhnkgKIqRZ88ewOu9485isoEraAjxivK
- PYW0PlnU/VyV3TzPr+iET3PQkYH7POxZjQNtujdxFHXxNb0KDO2RS6R006LqRZX++Dyo5wXO/7yUToYe
- pBLFueHWVXND+Bxorgu3oHqJ3/wABx854eTHqntjzbc9sfCjchqvza8jphmxeJu+IKcfZozvdqz9TTav
- k59D/JVH46kXDtf7ZRSqK3HtS5YuXfoKji8BteuCdvu10QsoPNvjsXRcZRQgI9OgIUc7Fnj2Mi2Eyluz
- v7q353DegB+WObgzqp0oEg32WPxmpUYjmzUCHDBn7Uhp0STJzWED19r/wt91T+y8o9VqvYoveaxQxjfG
- 7EEvCGqjDXqcw1TQWdyh1V/SAyFtW7Zs2cvYdGioHUNFtrQBW8eY3xLSj1Xrum4JODVt6Vm6T388cmv4
- cpVRQd2Z8sMIdRWbDU26QRp49i/5qy5hg7jHplds0ijcLjlbSn8k8gyqUvntIto4ji9XGQXIIO+WHkQo
- r54tI7P61VE3/wM2CcFnmVvaUOnDZo1DVQfcl6ul62hMnl2LUnSv3C2LIj2j54CMEFQtss/GqCGD0JkR
- YtyhklUGfHZrv00kclo2GxnIwEci7dvT11KjXuAen7dwkiFoDH9VsO2KZiFkdQwoNYMHRJMBxQdRRwYJ
- Z/ZKcYdy17BZCD7L7CxABklMkBsllDbfpzoWjqEx766gnVWyDpyhSYjIBHcJYefk2S+wudIkePCZB9Q7
- a89is4HBg/wrKe5Qnj2dzULwWWYXIpx0IhbZ4DJ29o05HNe0mhwdv4E2ys6YVEnnCbp/xt8X02+tMn0F
- 6eRsfsdC6c/mSlPgIR4s3nyojnk/UrxzSm7cINtEIsdks4mE3vo0Oo7rXMmTHYfe6sgZc6p0L3r0JNJr
- YnxIifHb/t7CjQ81yPgDHpil0W5n3ElSnAn1HEVQ0M07s0cci+NDvbL2FtzyX2BzpW5oa3zxxrPI4dm0
- kGpzi5Ij9ChN8o5iXs9mMwc5P+7Vo/J9iYQX0ufYXGkCmjoh3XgSrRRjs1xoXEMKnyXn3G9w0BC8CbNn
- tKbaKrNGXjU4Fl5O82crnUkDDpg3a3Mj3mKF9X/Y3ZMKlymqfnGwkPyeLtI82SZmCPAC+aJ8b7raSrMU
- 2DyENoyjdh6eLx0vdxW0EaLzPWhTBdo47j+oyxgl0Lk0X4xmVXBQpZdwzbh80yPhBrOpSLXp4/3tibzS
- Iyzd8KDZdKbB/ShainvzrrvuuqDEPsKZQpvnNqo1VKlazwTIBDdIN2xO+buVo4pVYuQ5Oe5BIHNkdjOH
- qmk0fz6wbMGy3A3eIuW3VypoO+79Wjz3/Tn52SagndnlGxXr8bzdS8KVcXI40n3ICKvYtAteUnTgPhX5
- Upiw9MhLcxZBVehd0r1qUmjf1LbUeqrB2+dC6QbFQvGbuzUOHH4F4liDt843UK89leZ50Z650pJY3/P2
- xRsqZ3tKSEsPkcG3Wh1Kt3Lyswst/sGNKNr1+8FhJ8shAx2LePLXS1h7Y9ah/wq9YApeLg2Jk59d4Lw5
- 4xEJneOcW8rBSkHVsHJtFfsijUpzMEUAGSR7Dl2j0pNqqbfkyv4bI+oxqgaFU+ZR+nDwLjTjFNWulWST
- NeVdEjLemzkKRQAvscJxkR49B6e+InwOwvLgcIq9cScVjtgn5M7g4LMJbubu1N0n35xcPRsV/eZf8fdg
- JxtpuyMX2k8M9+l/++5bSnD6J+leVimJw/GoslsQzfpzijaMzm+01y7PnsLJKxlQB4hw3xL/d237nWF6
- /7hHs2jg94V5uUFDVfAm6jt9qBEJ3cBKElpDIt47Fkr92t7sqEVYxJlb1aZqGZvPNnDe7FWHw8raG7XN
- UQ7crzv67l+vaq72UHsFz6dgx3dzIpvPNnyEwem4Kff136SB9ETZiZBKidKjoT17w67//OPUtrCpQtC8
- KKoO4cYMuqfuRtzwU1CCj20J7TSC+5ZXetzZ5IwD2klFSLMrWv/DpkovtCsJ3my0C8c53I0rLZmlvaY2
- IFOciUyxgoMqFdjNmD1S9zShUZTEVBWW0ibROiA2U4pAe2IhMsJK2mNKR8LrAaV13sE226lBzaaNgQxC
- G+tJ6UNazVLGCDW+ZcckuQvZrFFoe1E5fVbP8mlFGSl4e+cM3tV3FBtnxGtpCS8toOKPu3A1WrgGUnID
- DkUZGXA+mpkgOKV9sa4NraW4041v2gZKsgs148uilTFCdXzRKSE2GYrsKpzZsnDhwpezGW3KcZxsR+pf
- DKcoIwGO+qjslDVlkGi9uhg/HSzKZju4tttPtAmlGUQZE8ggmTu+s8lQoG2RfSZ7z9FzaJfkHaV9EZsp
- ymiB82UuYht2gJB2QpHiZT3EZiEFmwGew2aKMlpoax7BIUOlt/qpAvVUSXF2Ze0NbBqCatQa0Y6kjXRl
- XMABcw45NcezWSnirty8hn+swJhPc7AQZJjvS3ahrD2GzRRltNDbWXRKiMYm2KwQKXyOHlrSai3moDtQ
- VQ6fbU/ZzMn3d2NTRRktBVsqJXqassjuypWF0uMgDhpSEH4zmynKeIATZq7wc9ZewGaZwC67KzetVNuD
- So+8/Zuh89hUUcYDGshnCI7ZVdHhPDR9RAonaBMH6YLSg/b2lWwjef6BbKoo44EygOicXbktdGY5m/dR
- 2GNl7BNUjWLzLmjM5++gYu06NlWU8QKHPK/PQZN63OYcpkNzq3p7r6Jqk/kGbS0qZS58d0RP3LK09FAm
- BdqoDyXFo6Kj9ojW4nCQPmhuFTXqO4sX5x51UK5R765gc0WZDIKSBxWle6HKQouvkDnWSnGmdDetEeFg
- ijI54M19jeCw/aJ1JCWrQHTGC58rUuogJOQj3VNAmVzg/D+QHFcU7Upi7Y2BcZ+hPQTQ4D8MDr4y2k8g
- nD6SeT69KD1+WpkG4KyP9zlv0xJ6uhRlYoHTVnv7DyNrT+ZkFWV6QNXpY6JD1ye0S3TNuTLFRBtOu/sF
- 5x5Onl1LPVucjKJML9TtSpvIOWPvEp29iqz9LmU6jlpR5g+0YR+c+300kAdnl3a7lBXtwXu+c24/jkpR
- 5j9+298bJcIJyAA06fAi6vKF1lH1CZnoDOru1XENRVEURVEURVEURVEURVEURVEURVEURVEURVEURVEU
- RVEURWmIHXb4fwUxDfhX0CkKAAAAAElFTkSuQmCC
diff --git a/src/PBAnaly/PBAnaly.csproj b/src/PBAnaly/PBAnaly.csproj
index 79d6bb5..3b8c56b 100644
--- a/src/PBAnaly/PBAnaly.csproj
+++ b/src/PBAnaly/PBAnaly.csproj
@@ -57,6 +57,7 @@
+
Form
@@ -131,6 +132,7 @@
+
Form
@@ -253,16 +255,9 @@
MainForm.cs
-
- ResXFileCodeGenerator
- Resources.Designer.cs
- Designer
-
-
- True
- Resources.resx
- True
-
+
+
+
SettingForm.cs
diff --git a/src/PBAnaly/Program.cs b/src/PBAnaly/Program.cs
index 696d37f..fd5d5e1 100644
--- a/src/PBAnaly/Program.cs
+++ b/src/PBAnaly/Program.cs
@@ -5,6 +5,7 @@ using System.Windows.Forms;
using PBAnaly.Module;
using PBAnaly.UI;
using PBAnaly.LoginCommon;
+using PBAnaly.Assist;
namespace PBAnaly
{
public static class Global
@@ -63,11 +64,11 @@ namespace PBAnaly
}
- if (Util.ViKeySoft.Instance.CheckViKey() == false)
- {
- MessageBox.Show("你没有权限,请检查加密狗是否插入","警告");
- return;
- }
+ //if (Util.ViKeySoft.Instance.CheckViKey() == false)
+ //{
+ // MessageBox.Show("你没有权限,请检查加密狗是否插入","警告");
+ // return;
+ //}
Util.ViKeySoft.Instance.Uninitializatio();
#if true
Application.EnableVisualStyles();
@@ -77,6 +78,7 @@ namespace PBAnaly
string dbPath = "UserManage.db";
string connectionString = $"Data Source={dbPath};Version=3;";
UserManage.ConnectDb();
+ GlobalData.LoadGlobalPropertyFromDb();
//AccessControl.LoadConfig();//加载权限
var login = new LoginForm();
login.StartPosition = FormStartPosition.CenterScreen;
diff --git a/src/PBAnaly/Properties/Resources.en-US.resx b/src/PBAnaly/Properties/Resources.en-US.resx
new file mode 100644
index 0000000..599f241
--- /dev/null
+++ b/src/PBAnaly/Properties/Resources.en-US.resx
@@ -0,0 +1,328 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+
+
+
+
+ Back
+
+
+ Name
+
+
+ Question
+
+
+ Answer
+
+
+ Password
+
+
+ FIND
+
+
+ Login
+
+
+ Remember Me
+
+
+ Forgot your password? Click back
+
+
+ Login
+
+
+ Register
+
+
+ Back
+
+
+ Name
+
+
+ Password
+
+
+ Password
+
+
+ Question
+
+
+ register
+
+
+ EditRole
+
+
+ Delete
+
+
+ FixPass
+
+
+ Name
+
+
+ Role
+
+
+ ChangeRole
+
+
+ Delete
+
+
+ Password
+
+
+ Name
+
+
+ FixPassword
+
+
+ LoadData
+
+
+ ExportMap
+
+
+ DataAnalyze
+
+
+ Waveform
+
+
+ System
+
+
+ Log
+
+
+ MapDeal
+
+
+ AcidAnalyze
+
+
+ RoiAnalyze
+
+
+ MiniAnalyze
+
+
+ Dotcounts
+
+
+ Correction
+
+
+ Show
+
+
+ Mode
+
+
+ RoleManage
+
+
+ Save
+
+
+ Answer
+
+
+ Select one line and delete it
+
+
+ Photon
+
+
+ Trans-fluorescence
+
+
+ FindLane
+
+
+ path
+
+
+ One
+
+
+ Last
+
+
+ Next
+
+
+ finally
+
+
+ SaveTIF
+
+
+ Close
+
+
+ Open
+
+
+ Enter
+
+
+ Cancel
+
+
+ Lane
+
+
+ LaneWidth
+
+
+ InitialWell
+
+
+ Stripe
+
+
+ conformity
+
+
+ Dark/Light Theme
+
+
+ Setting
+
+
+ SystemSetting
+
+
+ UserManage
+
+
+ Language:
+
+
\ No newline at end of file
diff --git a/src/PBAnaly/Properties/Resources.resx b/src/PBAnaly/Properties/Resources.resx
index bc4101a..4aa8e68 100644
--- a/src/PBAnaly/Properties/Resources.resx
+++ b/src/PBAnaly/Properties/Resources.resx
@@ -118,24 +118,15 @@
System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
- ..\Resources\Black_Blue_0.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
..\Resources\计数器.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
..\Resources\返回前台.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
- ..\Resources\yto-icon-X-transit_time.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
..\Resources\关闭White.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
- ..\Resources\EtBr_1.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
..\Resources\壁纸.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
@@ -172,9 +163,6 @@
..\Resources\波形设置-未选中.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
- ..\Resources\Gray.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
..\Resources\Black_Blue_1.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
@@ -193,9 +181,6 @@
..\Resources\圆形.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
- ..\Resources\Black_Red_0.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
..\Resources\京仪科技定稿_画板 1 副本2.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
@@ -211,21 +196,12 @@
..\Resources\风控.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
- ..\Resources\Black_SDS_1.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
..\Resources\饼干.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
..\Resources\控制窗口.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
- ..\Resources\Black_SDS_0.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
-
- ..\Resources\EtBr_0.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
..\Resources\Black_Yley_0.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
@@ -238,12 +214,6 @@
..\Resources\YellowHot_0.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
- ..\Resources\Pseudo_0.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
-
- ..\Resources\C.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
..\Resources\图片管理.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
@@ -262,21 +232,12 @@
..\Resources\缩小.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
- ..\Resources\Black_Yley_1.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
..\Resources\導出.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
- ..\Resources\Pseudo_1.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
..\Resources\线段.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
- ..\Resources\10矩形.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
..\Resources\最大化white.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
@@ -310,4 +271,208 @@
..\Resources\登录-亮.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+ 返回
+
+
+ 用户名
+
+
+ 密保问题
+
+
+ 答案
+
+
+ 你的密码
+
+
+ 找回
+
+
+ 登录
+
+
+ 记住登录
+
+
+ 忘记密码?点击找回
+
+
+ 登录
+
+
+ 注册
+
+
+ 返回
+
+
+ 用户名
+
+
+ 密码
+
+
+ 确认密码
+
+
+ 密保问题
+
+
+ 注册
+
+
+ 修改权限
+
+
+ 删除
+
+
+ 修改密码
+
+
+ 用户名
+
+
+ 权限
+
+
+ 修改权限
+
+
+ 删除
+
+
+ 密码
+
+
+ 用户名
+
+
+ 修改密码
+
+
+ 加载数据
+
+
+ 导出图像
+
+
+ 数据分析
+
+
+ 泳道波形图
+
+
+ 系统操作
+
+
+ 操作日志
+
+
+ 图像处理
+
+
+ 泳道分析
+
+
+ ROI分析
+
+
+ 微孔版分析
+
+
+ 菌落技术
+
+
+ 蛋白归一化
+
+
+ 显示
+
+
+ 模式
+
+
+ 权限管理
+
+
+ 保存
+
+
+ 答案
+
+
+ 提示
+
+
+ 光子量
+
+
+ 反式荧光
+
+
+ 查找泳道
+
+
+ 路径
+
+
+ 第一幅
+
+
+ 上一页
+
+
+ 下一页
+
+
+ 最后
+
+
+ 另存为
+
+
+ 关闭
+
+
+ 打开当前帧
+
+
+ 确定
+
+
+ 取消
+
+
+ 泳道
+
+
+ 统一泳道宽度
+
+
+ 初始井
+
+
+ 条带
+
+
+ 整合
+
+
+ 光/暗 主题
+
+
+ 设置
+
+
+ 系统设置
+
+
+ 用户管理
+
+
+ 语言
+
\ No newline at end of file
diff --git a/src/PBAnaly/Properties/Resources.zh-CN.resx b/src/PBAnaly/Properties/Resources.zh-CN.resx
new file mode 100644
index 0000000..5e8f7d4
--- /dev/null
+++ b/src/PBAnaly/Properties/Resources.zh-CN.resx
@@ -0,0 +1,328 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+
+
+
+
+ 返回
+
+
+ 用户名
+
+
+ 密保问题
+
+
+ 答案
+
+
+ 你的密码
+
+
+ 找回
+
+
+ 登录
+
+
+ 记住本次登录
+
+
+ 忘记密码?点击找回
+
+
+ 登录
+
+
+ 注册
+
+
+ 返回
+
+
+ 用户名
+
+
+ 密码
+
+
+ 确认密码
+
+
+ 密保问题
+
+
+ 注册
+
+
+ 修改权限
+
+
+ 删除
+
+
+ 修改密码
+
+
+ 用户名
+
+
+ 权限
+
+
+ 修改权限
+
+
+ 删除
+
+
+ 密码
+
+
+ 用户名
+
+
+ 修改密码
+
+
+ 加载数据
+
+
+ 导出图像
+
+
+ 数据分析
+
+
+ 泳道波形图
+
+
+ 系统操作
+
+
+ 操作日志
+
+
+ 图像处理
+
+
+ 泳道分析
+
+
+ ROI分析
+
+
+ 微孔版分析
+
+
+ 菌落技术
+
+
+ 蛋白归一化
+
+
+ 显示
+
+
+ 模式
+
+
+ 权限管理
+
+
+ 保存
+
+
+ 答案
+
+
+ 选中表格中一行删掉即可
+
+
+ 光子量
+
+
+ 反式荧光
+
+
+ 查找泳道
+
+
+ 路径
+
+
+ 第一幅
+
+
+ 上一页
+
+
+ 下一页
+
+
+ 最后
+
+
+ 另存为单帧TIF
+
+
+ 关闭
+
+
+ 打开当前帧
+
+
+ 确定
+
+
+ 取消
+
+
+ 泳道
+
+
+ 统一泳道宽度
+
+
+ 初始井
+
+
+ 条带
+
+
+ 整合
+
+
+ 光/暗 主题
+
+
+ 设置
+
+
+ 系统设置
+
+
+ 用户管理
+
+
+ 语言
+
+
\ No newline at end of file
diff --git a/src/PBAnaly/UI/AnalyzeDataForm.Designer.cs b/src/PBAnaly/UI/AnalyzeDataForm.Designer.cs
index 7b781c5..04af214 100644
--- a/src/PBAnaly/UI/AnalyzeDataForm.Designer.cs
+++ b/src/PBAnaly/UI/AnalyzeDataForm.Designer.cs
@@ -104,7 +104,7 @@
this.metroPanel1.Location = new System.Drawing.Point(0, 25);
this.metroPanel1.Margin = new System.Windows.Forms.Padding(0);
this.metroPanel1.Name = "metroPanel1";
- this.metroPanel1.Size = new System.Drawing.Size(1223, 29);
+ this.metroPanel1.Size = new System.Drawing.Size(1303, 29);
this.metroPanel1.Style = ReaLTaiizor.Enum.Metro.Style.Custom;
this.metroPanel1.StyleManager = null;
this.metroPanel1.TabIndex = 3;
@@ -135,7 +135,7 @@
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 29F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
- this.tableLayoutPanel1.Size = new System.Drawing.Size(1223, 905);
+ this.tableLayoutPanel1.Size = new System.Drawing.Size(1303, 1073);
this.tableLayoutPanel1.TabIndex = 3;
//
// panel1
@@ -147,8 +147,8 @@
this.panel1.EdgeColor = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(41)))), ((int)(((byte)(50)))));
this.panel1.Location = new System.Drawing.Point(3, 57);
this.panel1.Name = "panel1";
- this.panel1.Padding = new System.Windows.Forms.Padding(5, 5, 5, 5);
- this.panel1.Size = new System.Drawing.Size(1217, 845);
+ this.panel1.Padding = new System.Windows.Forms.Padding(5);
+ this.panel1.Size = new System.Drawing.Size(1297, 1013);
this.panel1.SmoothingType = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
this.panel1.TabIndex = 4;
this.panel1.Text = "panel1";
@@ -161,14 +161,14 @@
this.dataGridView1.Name = "dataGridView1";
this.dataGridView1.RowHeadersWidth = 51;
this.dataGridView1.RowTemplate.Height = 23;
- this.dataGridView1.Size = new System.Drawing.Size(1207, 835);
+ this.dataGridView1.Size = new System.Drawing.Size(1287, 1003);
this.dataGridView1.TabIndex = 0;
//
// AnalyzeDataForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.ClientSize = new System.Drawing.Size(1229, 932);
+ this.ClientSize = new System.Drawing.Size(1309, 1100);
this.Controls.Add(this.tableLayoutPanel1);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Fixed3D;
this.FormStyle = MaterialSkin.Controls.MaterialForm.FormStyles.ActionBar_None;
diff --git a/src/PBAnaly/UI/AnalyzeDataForm.cs b/src/PBAnaly/UI/AnalyzeDataForm.cs
index 5e71a2c..248b7c3 100644
--- a/src/PBAnaly/UI/AnalyzeDataForm.cs
+++ b/src/PBAnaly/UI/AnalyzeDataForm.cs
@@ -1,4 +1,5 @@
using MaterialSkin.Controls;
+using PBAnaly.Assist;
using PBBiologyVC;
//using ReaLTaiizor.Util;
//using Sunny.UI.Win32;
@@ -7,8 +8,11 @@ using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
+using System.Globalization;
using System.Linq;
+using System.Resources;
using System.Text;
+using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
@@ -51,8 +55,57 @@ namespace PBAnaly.UI
this.dataGridView1.CellPainting += DataGridView1_CellPainting;
+ if (GlobalData.GetProperty("Language") == "Chinese")
+ {
+ SetLanguage("zh-CN");
+ }
+ else
+ {
+ SetLanguage("en-US");
+ }
+
}
+ #region 中英文切换
+ ResourceManager resourceManager;
+ private void SetLanguage(string cultureCode)
+ {
+ resourceManager = new ResourceManager("PBAnaly.Properties.Resources", typeof(MainForm).Assembly);
+
+ // 设置当前线程的文化信息
+ Thread.CurrentThread.CurrentUICulture = new CultureInfo(cultureCode);
+
+ // 更新所有控件的文本
+ UpdateControlsText();
+ }
+
+ // 更新所有控件的文本
+ private void UpdateControlsText()
+ {
+ //// 遍历所有控件并更新文本
+ foreach (Control control in this.Controls)
+ {
+ UpdateControlText(control);
+ }
+ }
+ // 更新单个控件的文本
+ private void UpdateControlText(Control control)
+ {
+ //// 直接通过控件的 Name 属性获取资源字符串
+ string resourceText = resourceManager.GetString(control.Name);
+ if (!string.IsNullOrEmpty(resourceText))
+ {
+ control.Text = resourceText;
+ }
+
+ // 如果控件包含子控件,则递归更新子控件
+ foreach (Control subControl in control.Controls)
+ {
+ UpdateControlText(subControl);
+ }
+ }
+
+ #endregion
public void Draw()
{
diff --git a/src/PBAnaly/UI/BioanalyImagePanel.Designer.cs b/src/PBAnaly/UI/BioanalyImagePanel.Designer.cs
index 3a761ab..6ee6e46 100644
--- a/src/PBAnaly/UI/BioanalyImagePanel.Designer.cs
+++ b/src/PBAnaly/UI/BioanalyImagePanel.Designer.cs
@@ -33,7 +33,7 @@
this.panel1 = new AntdUI.Panel();
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
this.panel2 = new AntdUI.Panel();
- this.label2 = new AntdUI.Label();
+ this.label2_mode = new AntdUI.Label();
this.cbb_mode = new System.Windows.Forms.ComboBox();
this.lb_imageIndex = new AntdUI.Label();
this.cb_scientific = new AntdUI.Checkbox();
@@ -120,7 +120,7 @@
//
// panel2
//
- this.panel2.Controls.Add(this.label2);
+ this.panel2.Controls.Add(this.label2_mode);
this.panel2.Controls.Add(this.cbb_mode);
this.panel2.Controls.Add(this.lb_imageIndex);
this.panel2.Dock = System.Windows.Forms.DockStyle.Fill;
@@ -131,15 +131,15 @@
this.panel2.TabIndex = 0;
this.panel2.Text = "panel2";
//
- // label2
+ // label2_mode
//
- this.label2.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ this.label2_mode.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)));
- this.label2.Location = new System.Drawing.Point(36, 0);
- this.label2.Name = "label2";
- this.label2.Size = new System.Drawing.Size(36, 23);
- this.label2.TabIndex = 1;
- this.label2.Text = "模式:";
+ this.label2_mode.Location = new System.Drawing.Point(36, 0);
+ this.label2_mode.Name = "label2_mode";
+ this.label2_mode.Size = new System.Drawing.Size(36, 23);
+ this.label2_mode.TabIndex = 1;
+ this.label2_mode.Text = "模式:";
//
// cbb_mode
//
@@ -445,6 +445,7 @@
this.lb_top_info.Size = new System.Drawing.Size(60, 22);
this.lb_top_info.TabIndex = 4;
this.lb_top_info.Text = "Trans-fluorescence";
+ this.lb_top_info.TextAlign = System.Drawing.ContentAlignment.TopLeft;
//
// BioanalyImagePanel
//
@@ -498,7 +499,7 @@
public System.Windows.Forms.TableLayoutPanel tlp_right_panel;
public System.Windows.Forms.TableLayoutPanel tableLayoutPanel2;
public AntdUI.Checkbox cb_scientific;
- private AntdUI.Label label2;
+ private AntdUI.Label label2_mode;
public AntdUI.Label lb_imageIndex;
public System.Windows.Forms.ContextMenuStrip ctms_strop;
private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
diff --git a/src/PBAnaly/UI/BioanalyImagePanel.cs b/src/PBAnaly/UI/BioanalyImagePanel.cs
index ca345b3..889c0dc 100644
--- a/src/PBAnaly/UI/BioanalyImagePanel.cs
+++ b/src/PBAnaly/UI/BioanalyImagePanel.cs
@@ -1,4 +1,5 @@
-using PBAnaly.Module;
+using PBAnaly.Assist;
+using PBAnaly.Module;
using SixLabors.ImageSharp;
using SixLabors.ImageSharp.PixelFormats;
using System;
@@ -7,8 +8,11 @@ using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
+using System.Globalization;
using System.Linq;
+using System.Resources;
using System.Text;
+using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
@@ -45,8 +49,57 @@ namespace PBAnaly.UI
CenterPictureBox();
image_pl.MouseWheel += Image_pl_MouseWheel;
+
+ if (GlobalData.GetProperty("Language") == "Chinese")
+ {
+ SetLanguage("zh-CN");
+ }
+ else
+ {
+ SetLanguage("en-US");
+ }
}
+ #region 中英文切换
+ ResourceManager resourceManager;
+ private void SetLanguage(string cultureCode)
+ {
+ resourceManager = new ResourceManager("PBAnaly.Properties.Resources", typeof(MainForm).Assembly);
+
+ // 设置当前线程的文化信息
+ Thread.CurrentThread.CurrentUICulture = new CultureInfo(cultureCode);
+
+ // 更新所有控件的文本
+ UpdateControlsText();
+ }
+
+ // 更新所有控件的文本
+ private void UpdateControlsText()
+ {
+ //// 遍历所有控件并更新文本
+ foreach (Control control in this.Controls)
+ {
+ UpdateControlText(control);
+ }
+ }
+ // 更新单个控件的文本
+ private void UpdateControlText(Control control)
+ {
+ //// 直接通过控件的 Name 属性获取资源字符串
+ string resourceText = resourceManager.GetString(control.Name);
+ if (!string.IsNullOrEmpty(resourceText))
+ {
+ control.Text = resourceText;
+ }
+
+ // 如果控件包含子控件,则递归更新子控件
+ foreach (Control subControl in control.Controls)
+ {
+ UpdateControlText(subControl);
+ }
+ }
+
+ #endregion
#region 对外方法
diff --git a/src/PBAnaly/UI/LanesImagePaletteForm.cs b/src/PBAnaly/UI/LanesImagePaletteForm.cs
index 6f17814..10c12ab 100644
--- a/src/PBAnaly/UI/LanesImagePaletteForm.cs
+++ b/src/PBAnaly/UI/LanesImagePaletteForm.cs
@@ -9,6 +9,10 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
+using System.Globalization;
+using System.Resources;
+using System.Threading;
+using PBAnaly.Assist;
namespace PBAnaly.UI
{
@@ -18,8 +22,56 @@ namespace PBAnaly.UI
public LanesImagePaletteForm()
{
InitializeComponent();
+
+ if (GlobalData.GetProperty("Language") == "Chinese")
+ {
+ SetLanguage("zh-CN");
+ }
+ else
+ {
+ SetLanguage("en-US");
+ }
}
-
+ #region 中英文切换
+ ResourceManager resourceManager;
+ private void SetLanguage(string cultureCode)
+ {
+ resourceManager = new ResourceManager("PBAnaly.Properties.Resources", typeof(MainForm).Assembly);
+
+ // 设置当前线程的文化信息
+ Thread.CurrentThread.CurrentUICulture = new CultureInfo(cultureCode);
+
+ // 更新所有控件的文本
+ UpdateControlsText();
+ }
+
+ // 更新所有控件的文本
+ private void UpdateControlsText()
+ {
+ //// 遍历所有控件并更新文本
+ foreach (Control control in this.Controls)
+ {
+ UpdateControlText(control);
+ }
+ }
+ // 更新单个控件的文本
+ private void UpdateControlText(Control control)
+ {
+ //// 直接通过控件的 Name 属性获取资源字符串
+ string resourceText = resourceManager.GetString(control.Name);
+ if (!string.IsNullOrEmpty(resourceText))
+ {
+ control.Text = resourceText;
+ }
+
+ // 如果控件包含子控件,则递归更新子控件
+ foreach (Control subControl in control.Controls)
+ {
+ UpdateControlText(subControl);
+ }
+ }
+
+ #endregion
}
}
diff --git a/src/PBAnaly/UI/MultiImageForm.Designer.cs b/src/PBAnaly/UI/MultiImageForm.Designer.cs
index 979d963..da195df 100644
--- a/src/PBAnaly/UI/MultiImageForm.Designer.cs
+++ b/src/PBAnaly/UI/MultiImageForm.Designer.cs
@@ -28,7 +28,7 @@
///
private void InitializeComponent()
{
- this.label1 = new AntdUI.Label();
+ this.label_path = new AntdUI.Label();
this.pb_image = new System.Windows.Forms.PictureBox();
this.ab_one = new ReaLTaiizor.Controls.AirButton();
this.ab_last = new ReaLTaiizor.Controls.AirButton();
@@ -42,19 +42,21 @@
((System.ComponentModel.ISupportInitialize)(this.pb_image)).BeginInit();
this.SuspendLayout();
//
- // label1
+ // label_path
//
- this.label1.Location = new System.Drawing.Point(12, 12);
- this.label1.Name = "label1";
- this.label1.Size = new System.Drawing.Size(75, 23);
- this.label1.TabIndex = 0;
- this.label1.Text = "路径:";
+ this.label_path.Location = new System.Drawing.Point(9, 10);
+ this.label_path.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
+ this.label_path.Name = "label_path";
+ this.label_path.Size = new System.Drawing.Size(56, 18);
+ this.label_path.TabIndex = 0;
+ this.label_path.Text = "路径:";
//
// pb_image
//
- this.pb_image.Location = new System.Drawing.Point(24, 67);
+ this.pb_image.Location = new System.Drawing.Point(18, 54);
+ this.pb_image.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
this.pb_image.Name = "pb_image";
- this.pb_image.Size = new System.Drawing.Size(752, 447);
+ this.pb_image.Size = new System.Drawing.Size(564, 358);
this.pb_image.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
this.pb_image.TabIndex = 2;
this.pb_image.TabStop = false;
@@ -65,10 +67,11 @@
this.ab_one.Customization = "7e3t//Ly8v/r6+v/5ubm/+vr6//f39//p6en/zw8PP8UFBT/gICA/w==";
this.ab_one.Font = new System.Drawing.Font("Segoe UI", 9F);
this.ab_one.Image = null;
- this.ab_one.Location = new System.Drawing.Point(24, 530);
+ this.ab_one.Location = new System.Drawing.Point(18, 424);
+ this.ab_one.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
this.ab_one.Name = "ab_one";
this.ab_one.NoRounding = false;
- this.ab_one.Size = new System.Drawing.Size(81, 40);
+ this.ab_one.Size = new System.Drawing.Size(61, 32);
this.ab_one.TabIndex = 3;
this.ab_one.Text = "第一幅";
this.ab_one.Transparent = false;
@@ -80,10 +83,11 @@
this.ab_last.Customization = "7e3t//Ly8v/r6+v/5ubm/+vr6//f39//p6en/zw8PP8UFBT/gICA/w==";
this.ab_last.Font = new System.Drawing.Font("Segoe UI", 9F);
this.ab_last.Image = null;
- this.ab_last.Location = new System.Drawing.Point(142, 530);
+ this.ab_last.Location = new System.Drawing.Point(106, 424);
+ this.ab_last.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
this.ab_last.Name = "ab_last";
this.ab_last.NoRounding = false;
- this.ab_last.Size = new System.Drawing.Size(81, 40);
+ this.ab_last.Size = new System.Drawing.Size(61, 32);
this.ab_last.TabIndex = 4;
this.ab_last.Text = "上一幅";
this.ab_last.Transparent = false;
@@ -95,10 +99,11 @@
this.ab_next.Customization = "7e3t//Ly8v/r6+v/5ubm/+vr6//f39//p6en/zw8PP8UFBT/gICA/w==";
this.ab_next.Font = new System.Drawing.Font("Segoe UI", 9F);
this.ab_next.Image = null;
- this.ab_next.Location = new System.Drawing.Point(337, 530);
+ this.ab_next.Location = new System.Drawing.Point(253, 424);
+ this.ab_next.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
this.ab_next.Name = "ab_next";
this.ab_next.NoRounding = false;
- this.ab_next.Size = new System.Drawing.Size(81, 40);
+ this.ab_next.Size = new System.Drawing.Size(61, 32);
this.ab_next.TabIndex = 5;
this.ab_next.Text = "下一幅";
this.ab_next.Transparent = false;
@@ -110,10 +115,11 @@
this.ab_atLast.Customization = "7e3t//Ly8v/r6+v/5ubm/+vr6//f39//p6en/zw8PP8UFBT/gICA/w==";
this.ab_atLast.Font = new System.Drawing.Font("Segoe UI", 9F);
this.ab_atLast.Image = null;
- this.ab_atLast.Location = new System.Drawing.Point(445, 530);
+ this.ab_atLast.Location = new System.Drawing.Point(334, 424);
+ this.ab_atLast.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
this.ab_atLast.Name = "ab_atLast";
this.ab_atLast.NoRounding = false;
- this.ab_atLast.Size = new System.Drawing.Size(81, 40);
+ this.ab_atLast.Size = new System.Drawing.Size(61, 32);
this.ab_atLast.TabIndex = 6;
this.ab_atLast.Text = "最后";
this.ab_atLast.Transparent = false;
@@ -121,9 +127,10 @@
//
// lb_lable
//
- this.lb_lable.Location = new System.Drawing.Point(257, 530);
+ this.lb_lable.Location = new System.Drawing.Point(193, 424);
+ this.lb_lable.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
this.lb_lable.Name = "lb_lable";
- this.lb_lable.Size = new System.Drawing.Size(64, 42);
+ this.lb_lable.Size = new System.Drawing.Size(48, 34);
this.lb_lable.TabIndex = 7;
this.lb_lable.Text = "0/0";
//
@@ -133,10 +140,11 @@
this.ab_saveTif.Customization = "7e3t//Ly8v/r6+v/5ubm/+vr6//f39//p6en/zw8PP8UFBT/gICA/w==";
this.ab_saveTif.Font = new System.Drawing.Font("Segoe UI", 9F);
this.ab_saveTif.Image = null;
- this.ab_saveTif.Location = new System.Drawing.Point(355, 590);
+ this.ab_saveTif.Location = new System.Drawing.Point(266, 472);
+ this.ab_saveTif.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
this.ab_saveTif.Name = "ab_saveTif";
this.ab_saveTif.NoRounding = false;
- this.ab_saveTif.Size = new System.Drawing.Size(123, 40);
+ this.ab_saveTif.Size = new System.Drawing.Size(92, 32);
this.ab_saveTif.TabIndex = 8;
this.ab_saveTif.Text = "另存为单帧TIF";
this.ab_saveTif.Transparent = false;
@@ -148,10 +156,11 @@
this.ab_close.Customization = "7e3t//Ly8v/r6+v/5ubm/+vr6//f39//p6en/zw8PP8UFBT/gICA/w==";
this.ab_close.Font = new System.Drawing.Font("Segoe UI", 9F);
this.ab_close.Image = null;
- this.ab_close.Location = new System.Drawing.Point(511, 590);
+ this.ab_close.Location = new System.Drawing.Point(383, 472);
+ this.ab_close.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
this.ab_close.Name = "ab_close";
this.ab_close.NoRounding = false;
- this.ab_close.Size = new System.Drawing.Size(123, 40);
+ this.ab_close.Size = new System.Drawing.Size(92, 32);
this.ab_close.TabIndex = 9;
this.ab_close.Text = "关闭";
this.ab_close.Transparent = false;
@@ -163,10 +172,11 @@
this.ab_open_cur_tif.Customization = "7e3t//Ly8v/r6+v/5ubm/+vr6//f39//p6en/zw8PP8UFBT/gICA/w==";
this.ab_open_cur_tif.Font = new System.Drawing.Font("Segoe UI", 9F);
this.ab_open_cur_tif.Image = null;
- this.ab_open_cur_tif.Location = new System.Drawing.Point(665, 590);
+ this.ab_open_cur_tif.Location = new System.Drawing.Point(499, 472);
+ this.ab_open_cur_tif.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
this.ab_open_cur_tif.Name = "ab_open_cur_tif";
this.ab_open_cur_tif.NoRounding = false;
- this.ab_open_cur_tif.Size = new System.Drawing.Size(123, 40);
+ this.ab_open_cur_tif.Size = new System.Drawing.Size(92, 32);
this.ab_open_cur_tif.TabIndex = 10;
this.ab_open_cur_tif.Text = "打开当前帧";
this.ab_open_cur_tif.Transparent = false;
@@ -176,17 +186,18 @@
//
this.cb_path.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cb_path.FormattingEnabled = true;
- this.cb_path.Location = new System.Drawing.Point(93, 12);
+ this.cb_path.Location = new System.Drawing.Point(70, 10);
+ this.cb_path.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
this.cb_path.Name = "cb_path";
- this.cb_path.Size = new System.Drawing.Size(632, 23);
+ this.cb_path.Size = new System.Drawing.Size(475, 20);
this.cb_path.TabIndex = 11;
//
// MultiImageForm
//
- this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 15F);
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackColor = System.Drawing.Color.LightGray;
- this.ClientSize = new System.Drawing.Size(818, 642);
+ this.ClientSize = new System.Drawing.Size(614, 514);
this.Controls.Add(this.cb_path);
this.Controls.Add(this.ab_open_cur_tif);
this.Controls.Add(this.ab_close);
@@ -197,8 +208,9 @@
this.Controls.Add(this.ab_last);
this.Controls.Add(this.ab_one);
this.Controls.Add(this.pb_image);
- this.Controls.Add(this.label1);
+ this.Controls.Add(this.label_path);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.SizableToolWindow;
+ this.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
this.Name = "MultiImageForm";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
this.Text = "序列图像管理";
@@ -210,7 +222,7 @@
#endregion
- private AntdUI.Label label1;
+ private AntdUI.Label label_path;
private System.Windows.Forms.PictureBox pb_image;
private ReaLTaiizor.Controls.AirButton ab_one;
private ReaLTaiizor.Controls.AirButton ab_last;
diff --git a/src/PBAnaly/UI/MultiImageForm.cs b/src/PBAnaly/UI/MultiImageForm.cs
index f8df66b..64678e3 100644
--- a/src/PBAnaly/UI/MultiImageForm.cs
+++ b/src/PBAnaly/UI/MultiImageForm.cs
@@ -1,12 +1,16 @@
using AntdUI;
using ImageMagick;
using OpenCvSharp.Flann;
+using PBAnaly.Assist;
using PBAnaly.Module;
using SixLabors.ImageSharp;
using SixLabors.ImageSharp.PixelFormats;
using System;
using System.Collections.Generic;
+using System.Globalization;
using System.IO;
+using System.Resources;
+using System.Threading;
using System.Windows.Forms;
namespace PBAnaly.UI
@@ -24,7 +28,60 @@ namespace PBAnaly.UI
cb_path.Items.Add(path);
cb_path.SelectedIndex = 0;
ReadTiff();
+
+ if (GlobalData.GetProperty("Language") == "Chinese")
+ {
+ SetLanguage("zh-CN");
+ }
+ else
+ {
+ SetLanguage("en-US");
+ }
}
+
+
+ #region 中英文切换
+ ResourceManager resourceManager;
+ private void SetLanguage(string cultureCode)
+ {
+ resourceManager = new ResourceManager("PBAnaly.Properties.Resources", typeof(MainForm).Assembly);
+
+ // 设置当前线程的文化信息
+ Thread.CurrentThread.CurrentUICulture = new CultureInfo(cultureCode);
+
+ // 更新所有控件的文本
+ UpdateControlsText();
+ }
+
+ // 更新所有控件的文本
+ private void UpdateControlsText()
+ {
+ //// 遍历所有控件并更新文本
+ foreach (Control control in this.Controls)
+ {
+ UpdateControlText(control);
+ }
+ }
+ // 更新单个控件的文本
+ private void UpdateControlText(Control control)
+ {
+ //// 直接通过控件的 Name 属性获取资源字符串
+ string resourceText = resourceManager.GetString(control.Name);
+ if (!string.IsNullOrEmpty(resourceText))
+ {
+ control.Text = resourceText;
+ }
+
+ // 如果控件包含子控件,则递归更新子控件
+ foreach (Control subControl in control.Controls)
+ {
+ UpdateControlText(subControl);
+ }
+ }
+
+ #endregion
+
+
private void ReadTiff()
{
imageList.Clear();
diff --git a/src/PBAnaly/UI/SizeForm.cs b/src/PBAnaly/UI/SizeForm.cs
index cde08d0..dffae20 100644
--- a/src/PBAnaly/UI/SizeForm.cs
+++ b/src/PBAnaly/UI/SizeForm.cs
@@ -1,10 +1,14 @@
-using System;
+using PBAnaly.Assist;
+using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
+using System.Globalization;
using System.Linq;
+using System.Resources;
using System.Text;
+using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
@@ -21,6 +25,16 @@ namespace PBAnaly.UI
private void btn_ok_Click(object sender, EventArgs e)
{
+ string msg = "";
+ if (GlobalData.GetProperty("Language") == "Chinese")
+ {
+ SetLanguage("zh-CN");
+ msg = "行值不小于列数";
+ }
+ else
+ {
+ SetLanguage("en-US");
+ }
row = int.Parse(btb_row.Text);
col = int.Parse(btb_col.Text);
@@ -37,5 +51,46 @@ namespace PBAnaly.UI
{
this.DialogResult = DialogResult.Cancel;
}
+ #region 中英文切换
+ ResourceManager resourceManager;
+ private void SetLanguage(string cultureCode)
+ {
+ resourceManager = new ResourceManager("PBAnaly.Properties.Resources", typeof(MainForm).Assembly);
+
+ // 设置当前线程的文化信息
+ Thread.CurrentThread.CurrentUICulture = new CultureInfo(cultureCode);
+
+ // 更新所有控件的文本
+ UpdateControlsText();
+ }
+
+ // 更新所有控件的文本
+ private void UpdateControlsText()
+ {
+ //// 遍历所有控件并更新文本
+ foreach (Control control in this.Controls)
+ {
+ UpdateControlText(control);
+ }
+ }
+ // 更新单个控件的文本
+ private void UpdateControlText(Control control)
+ {
+ //// 直接通过控件的 Name 属性获取资源字符串
+ string resourceText = resourceManager.GetString(control.Name);
+ if (!string.IsNullOrEmpty(resourceText))
+ {
+ control.Text = resourceText;
+ }
+
+ // 如果控件包含子控件,则递归更新子控件
+ foreach (Control subControl in control.Controls)
+ {
+ UpdateControlText(subControl);
+ }
+ }
+
+ #endregion
+
}
}
diff --git a/src/PBAnaly/UI/SystemSettingForm.Designer.cs b/src/PBAnaly/UI/SystemSettingForm.Designer.cs
index 95fe6db..085d09d 100644
--- a/src/PBAnaly/UI/SystemSettingForm.Designer.cs
+++ b/src/PBAnaly/UI/SystemSettingForm.Designer.cs
@@ -29,19 +29,28 @@
private void InitializeComponent()
{
this.panel1 = new System.Windows.Forms.Panel();
- this.panel_mode = new System.Windows.Forms.Panel();
- this.tabMain = new System.Windows.Forms.TabControl();
- this.tab_UserManage = new System.Windows.Forms.TabPage();
- this.pnlMainMenu = new System.Windows.Forms.Panel();
+ this.tab_Main = new System.Windows.Forms.TabControl();
+ this.tab_UserManage1 = new System.Windows.Forms.TabPage();
this.label4 = new System.Windows.Forms.Label();
this.btn_Min = new System.Windows.Forms.Button();
this.btn_Max = new System.Windows.Forms.Button();
this.btn_Close = new System.Windows.Forms.Button();
- this.btn_ReadManage = new System.Windows.Forms.Button();
+ this.pnl_MainMenu = new System.Windows.Forms.Panel();
+ this.btn_SystemSetting = new System.Windows.Forms.Button();
+ this.btn_UserManager = new System.Windows.Forms.Button();
+ this.panel4 = new System.Windows.Forms.Panel();
+ this.tab_SystemSetting = new System.Windows.Forms.TabPage();
+ this.panel_System = new System.Windows.Forms.Panel();
+ this.panel2 = new System.Windows.Forms.Panel();
+ this.cbx_System_Language = new System.Windows.Forms.ComboBox();
+ this.label_Language = new System.Windows.Forms.Label();
+ this.btn_save_ZH_US = new System.Windows.Forms.Button();
this.panel1.SuspendLayout();
- this.panel_mode.SuspendLayout();
- this.tabMain.SuspendLayout();
- this.pnlMainMenu.SuspendLayout();
+ this.tab_Main.SuspendLayout();
+ this.pnl_MainMenu.SuspendLayout();
+ this.tab_SystemSetting.SuspendLayout();
+ this.panel_System.SuspendLayout();
+ this.panel2.SuspendLayout();
this.SuspendLayout();
//
// panel1
@@ -50,58 +59,35 @@
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.panel1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50)))));
- this.panel1.Controls.Add(this.panel_mode);
- this.panel1.Controls.Add(this.pnlMainMenu);
+ this.panel1.Controls.Add(this.tab_Main);
+ this.panel1.Controls.Add(this.pnl_MainMenu);
this.panel1.Location = new System.Drawing.Point(-1, 31);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(1159, 642);
this.panel1.TabIndex = 455;
//
- // panel_mode
+ // tab_Main
//
- this.panel_mode.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
- | System.Windows.Forms.AnchorStyles.Left)
- | System.Windows.Forms.AnchorStyles.Right)));
- this.panel_mode.BackColor = System.Drawing.SystemColors.Control;
- this.panel_mode.Controls.Add(this.tabMain);
- this.panel_mode.Location = new System.Drawing.Point(59, 0);
- this.panel_mode.Name = "panel_mode";
- this.panel_mode.Size = new System.Drawing.Size(1098, 639);
- this.panel_mode.TabIndex = 444;
+ this.tab_Main.Alignment = System.Windows.Forms.TabAlignment.Left;
+ this.tab_Main.Controls.Add(this.tab_SystemSetting);
+ this.tab_Main.Controls.Add(this.tab_UserManage1);
+ this.tab_Main.Location = new System.Drawing.Point(174, 3);
+ this.tab_Main.Multiline = true;
+ this.tab_Main.Name = "tab_Main";
+ this.tab_Main.SelectedIndex = 0;
+ this.tab_Main.Size = new System.Drawing.Size(982, 636);
+ this.tab_Main.TabIndex = 0;
//
- // tabMain
+ // tab_UserManage1
//
- this.tabMain.Alignment = System.Windows.Forms.TabAlignment.Left;
- this.tabMain.Controls.Add(this.tab_UserManage);
- this.tabMain.Dock = System.Windows.Forms.DockStyle.Fill;
- this.tabMain.Location = new System.Drawing.Point(0, 0);
- this.tabMain.Multiline = true;
- this.tabMain.Name = "tabMain";
- this.tabMain.SelectedIndex = 0;
- this.tabMain.Size = new System.Drawing.Size(1098, 639);
- this.tabMain.TabIndex = 0;
- //
- // tab_UserManage
- //
- this.tab_UserManage.BackColor = System.Drawing.Color.White;
- this.tab_UserManage.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
- this.tab_UserManage.Location = new System.Drawing.Point(22, 4);
- this.tab_UserManage.Name = "tab_UserManage";
- this.tab_UserManage.Padding = new System.Windows.Forms.Padding(3);
- this.tab_UserManage.Size = new System.Drawing.Size(1072, 631);
- this.tab_UserManage.TabIndex = 0;
- this.tab_UserManage.Text = "用户管理";
- //
- // pnlMainMenu
- //
- this.pnlMainMenu.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
- | System.Windows.Forms.AnchorStyles.Left)));
- this.pnlMainMenu.BackColor = System.Drawing.Color.White;
- this.pnlMainMenu.Controls.Add(this.btn_ReadManage);
- this.pnlMainMenu.Location = new System.Drawing.Point(3, -3);
- this.pnlMainMenu.Name = "pnlMainMenu";
- this.pnlMainMenu.Size = new System.Drawing.Size(77, 642);
- this.pnlMainMenu.TabIndex = 443;
+ this.tab_UserManage1.BackColor = System.Drawing.Color.White;
+ this.tab_UserManage1.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
+ this.tab_UserManage1.Location = new System.Drawing.Point(22, 4);
+ this.tab_UserManage1.Name = "tab_UserManage1";
+ this.tab_UserManage1.Padding = new System.Windows.Forms.Padding(3);
+ this.tab_UserManage1.Size = new System.Drawing.Size(956, 628);
+ this.tab_UserManage1.TabIndex = 0;
+ this.tab_UserManage1.Text = "用户管理";
//
// label4
//
@@ -110,9 +96,9 @@
this.label4.ForeColor = System.Drawing.Color.White;
this.label4.Location = new System.Drawing.Point(12, 3);
this.label4.Name = "label4";
- this.label4.Size = new System.Drawing.Size(81, 25);
+ this.label4.Size = new System.Drawing.Size(77, 25);
this.label4.TabIndex = 456;
- this.label4.Text = "register";
+ this.label4.Text = "System";
//
// btn_Min
//
@@ -159,18 +145,128 @@
this.btn_Close.UseVisualStyleBackColor = false;
this.btn_Close.Click += new System.EventHandler(this.btn_Close_Click);
//
- // btn_ReadManage
+ // pnl_MainMenu
//
- this.btn_ReadManage.BackColor = System.Drawing.Color.White;
- this.btn_ReadManage.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
- this.btn_ReadManage.Font = new System.Drawing.Font("宋体", 9F);
- this.btn_ReadManage.Image = global::PBAnaly.Properties.Resources.登录_亮;
- this.btn_ReadManage.Location = new System.Drawing.Point(2, 3);
- this.btn_ReadManage.Name = "btn_ReadManage";
- this.btn_ReadManage.Size = new System.Drawing.Size(75, 86);
- this.btn_ReadManage.TabIndex = 3;
- this.btn_ReadManage.TextAlign = System.Drawing.ContentAlignment.BottomCenter;
- this.btn_ReadManage.UseVisualStyleBackColor = false;
+ this.pnl_MainMenu.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)));
+ this.pnl_MainMenu.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224)))));
+ this.pnl_MainMenu.Controls.Add(this.btn_SystemSetting);
+ this.pnl_MainMenu.Controls.Add(this.btn_UserManager);
+ this.pnl_MainMenu.Controls.Add(this.panel4);
+ this.pnl_MainMenu.Location = new System.Drawing.Point(5, 3);
+ this.pnl_MainMenu.Name = "pnl_MainMenu";
+ this.pnl_MainMenu.Size = new System.Drawing.Size(191, 636);
+ this.pnl_MainMenu.TabIndex = 445;
+ //
+ // btn_SystemSetting
+ //
+ this.btn_SystemSetting.BackColor = System.Drawing.SystemColors.Control;
+ this.btn_SystemSetting.FlatAppearance.BorderColor = System.Drawing.Color.Gold;
+ this.btn_SystemSetting.FlatAppearance.MouseDownBackColor = System.Drawing.Color.MediumAquamarine;
+ this.btn_SystemSetting.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
+ this.btn_SystemSetting.Font = new System.Drawing.Font("微软雅黑", 16F, System.Drawing.FontStyle.Bold);
+ this.btn_SystemSetting.Location = new System.Drawing.Point(1, 0);
+ this.btn_SystemSetting.Name = "btn_SystemSetting";
+ this.btn_SystemSetting.Size = new System.Drawing.Size(184, 50);
+ this.btn_SystemSetting.TabIndex = 1;
+ this.btn_SystemSetting.Text = "系统设置";
+ this.btn_SystemSetting.UseVisualStyleBackColor = false;
+ this.btn_SystemSetting.Click += new System.EventHandler(this.btn_SystemSetting_Click);
+ //
+ // btn_UserManager
+ //
+ this.btn_UserManager.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(56)))), ((int)(((byte)(83)))));
+ this.btn_UserManager.FlatAppearance.BorderColor = System.Drawing.Color.Gold;
+ this.btn_UserManager.FlatAppearance.MouseDownBackColor = System.Drawing.Color.MediumAquamarine;
+ this.btn_UserManager.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
+ this.btn_UserManager.Font = new System.Drawing.Font("微软雅黑", 16F, System.Drawing.FontStyle.Bold);
+ this.btn_UserManager.ForeColor = System.Drawing.Color.White;
+ this.btn_UserManager.Location = new System.Drawing.Point(1, 49);
+ this.btn_UserManager.Name = "btn_UserManager";
+ this.btn_UserManager.Size = new System.Drawing.Size(184, 50);
+ this.btn_UserManager.TabIndex = 0;
+ this.btn_UserManager.Text = "用户管理";
+ this.btn_UserManager.UseVisualStyleBackColor = false;
+ this.btn_UserManager.Click += new System.EventHandler(this.btn_UserManager_Click);
+ //
+ // panel4
+ //
+ this.panel4.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)));
+ this.panel4.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(56)))), ((int)(((byte)(83)))));
+ this.panel4.Location = new System.Drawing.Point(185, 0);
+ this.panel4.Name = "panel4";
+ this.panel4.Size = new System.Drawing.Size(3, 636);
+ this.panel4.TabIndex = 7;
+ //
+ // tab_SystemSetting
+ //
+ this.tab_SystemSetting.BackColor = System.Drawing.Color.White;
+ this.tab_SystemSetting.Controls.Add(this.panel_System);
+ this.tab_SystemSetting.Location = new System.Drawing.Point(22, 4);
+ this.tab_SystemSetting.Name = "tab_SystemSetting";
+ this.tab_SystemSetting.Padding = new System.Windows.Forms.Padding(3);
+ this.tab_SystemSetting.Size = new System.Drawing.Size(956, 628);
+ this.tab_SystemSetting.TabIndex = 1;
+ this.tab_SystemSetting.Text = "系统设置";
+ //
+ // panel_System
+ //
+ this.panel_System.Controls.Add(this.panel2);
+ this.panel_System.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.panel_System.Location = new System.Drawing.Point(3, 3);
+ this.panel_System.Name = "panel_System";
+ this.panel_System.Size = new System.Drawing.Size(950, 622);
+ this.panel_System.TabIndex = 1;
+ //
+ // panel2
+ //
+ this.panel2.Controls.Add(this.cbx_System_Language);
+ this.panel2.Controls.Add(this.label_Language);
+ this.panel2.Controls.Add(this.btn_save_ZH_US);
+ this.panel2.Location = new System.Drawing.Point(2, 3);
+ this.panel2.Name = "panel2";
+ this.panel2.Size = new System.Drawing.Size(394, 618);
+ this.panel2.TabIndex = 512;
+ //
+ // cbx_System_Language
+ //
+ this.cbx_System_Language.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+ this.cbx_System_Language.Font = new System.Drawing.Font("宋体", 15F);
+ this.cbx_System_Language.FormattingEnabled = true;
+ this.cbx_System_Language.Items.AddRange(new object[] {
+ "English",
+ "简体中文"});
+ this.cbx_System_Language.Location = new System.Drawing.Point(106, 17);
+ this.cbx_System_Language.Name = "cbx_System_Language";
+ this.cbx_System_Language.Size = new System.Drawing.Size(249, 28);
+ this.cbx_System_Language.TabIndex = 513;
+ //
+ // label_Language
+ //
+ this.label_Language.AutoSize = true;
+ this.label_Language.Font = new System.Drawing.Font("宋体", 13F);
+ this.label_Language.Location = new System.Drawing.Point(15, 22);
+ this.label_Language.Name = "label_Language";
+ this.label_Language.Size = new System.Drawing.Size(53, 18);
+ this.label_Language.TabIndex = 512;
+ this.label_Language.Text = "语言:";
+ //
+ // btn_save_ZH_US
+ //
+ this.btn_save_ZH_US.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(32)))), ((int)(((byte)(96)))));
+ this.btn_save_ZH_US.FlatAppearance.BorderSize = 0;
+ this.btn_save_ZH_US.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
+ this.btn_save_ZH_US.Font = new System.Drawing.Font("宋体", 13F, System.Drawing.FontStyle.Bold);
+ this.btn_save_ZH_US.ForeColor = System.Drawing.Color.White;
+ this.btn_save_ZH_US.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
+ this.btn_save_ZH_US.Location = new System.Drawing.Point(276, 562);
+ this.btn_save_ZH_US.Name = "btn_save_ZH_US";
+ this.btn_save_ZH_US.Size = new System.Drawing.Size(101, 38);
+ this.btn_save_ZH_US.TabIndex = 511;
+ this.btn_save_ZH_US.Text = "保存";
+ this.btn_save_ZH_US.UseVisualStyleBackColor = false;
+ this.btn_save_ZH_US.Click += new System.EventHandler(this.btn_save_ZH_US_Click);
//
// SystemSettingForm
//
@@ -188,9 +284,12 @@
this.Text = "SystemSettingForm";
this.Load += new System.EventHandler(this.SystemSettingForm_Load);
this.panel1.ResumeLayout(false);
- this.panel_mode.ResumeLayout(false);
- this.tabMain.ResumeLayout(false);
- this.pnlMainMenu.ResumeLayout(false);
+ this.tab_Main.ResumeLayout(false);
+ this.pnl_MainMenu.ResumeLayout(false);
+ this.tab_SystemSetting.ResumeLayout(false);
+ this.panel_System.ResumeLayout(false);
+ this.panel2.ResumeLayout(false);
+ this.panel2.PerformLayout();
this.ResumeLayout(false);
this.PerformLayout();
@@ -203,10 +302,17 @@
private System.Windows.Forms.Button btn_Close;
private System.Windows.Forms.Button btn_Max;
private System.Windows.Forms.Button btn_Min;
- private System.Windows.Forms.Panel pnlMainMenu;
- private System.Windows.Forms.Button btn_ReadManage;
- private System.Windows.Forms.Panel panel_mode;
- private System.Windows.Forms.TabControl tabMain;
- private System.Windows.Forms.TabPage tab_UserManage;
+ private System.Windows.Forms.TabControl tab_Main;
+ private System.Windows.Forms.TabPage tab_UserManage1;
+ private System.Windows.Forms.Panel pnl_MainMenu;
+ private System.Windows.Forms.Button btn_SystemSetting;
+ private System.Windows.Forms.Button btn_UserManager;
+ private System.Windows.Forms.Panel panel4;
+ private System.Windows.Forms.TabPage tab_SystemSetting;
+ private System.Windows.Forms.Panel panel_System;
+ private System.Windows.Forms.Panel panel2;
+ private System.Windows.Forms.ComboBox cbx_System_Language;
+ private System.Windows.Forms.Label label_Language;
+ private System.Windows.Forms.Button btn_save_ZH_US;
}
}
\ No newline at end of file
diff --git a/src/PBAnaly/UI/SystemSettingForm.cs b/src/PBAnaly/UI/SystemSettingForm.cs
index b0d1633..59f1a3e 100644
--- a/src/PBAnaly/UI/SystemSettingForm.cs
+++ b/src/PBAnaly/UI/SystemSettingForm.cs
@@ -1,13 +1,18 @@
-using PBAnaly.LoginCommon;
+using PBAnaly.Assist;
+using PBAnaly.LoginCommon;
+using ScottPlot.Colormaps;
using Sunny.UI.Win32;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
+using System.Globalization;
using System.Linq;
+using System.Resources;
using System.Security.Cryptography;
using System.Text;
+using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
@@ -19,12 +24,23 @@ namespace PBAnaly.UI
{
InitializeComponent();
- pnlMainMenu.BringToFront();
+ pnl_MainMenu.BringToFront();
// 设置窗体的启动位置为屏幕的中心
this.StartPosition = FormStartPosition.CenterScreen;
this.Location = new System.Drawing.Point((Screen.PrimaryScreen.WorkingArea.Width - this.Width) / 2,
(Screen.PrimaryScreen.WorkingArea.Height - this.Height) / 2);
+
+ GlobalData.PropertyChanged += OnGlobalDataPropertyChanged;
+
+ if (GlobalData.GetProperty("Language") == "Chinese")
+ {
+ SetLanguage("zh-CN");
+ }
+ else
+ {
+ SetLanguage("en-US");
+ }
}
UserManageForm UserForm;
@@ -108,18 +124,18 @@ namespace PBAnaly.UI
}
#endregion
- private void btn_Close_Click(object sender, EventArgs e)
- {
- this.Close();
- }
+
private void SystemSettingForm_Load(object sender, EventArgs e)
{
+ //加载系统参数
+ LoadSystemParam();
+
UserForm = new UserManageForm();
UserForm.Dock = DockStyle.Fill;
UserForm.Location = new Point(0, 0);
UserForm.TopLevel = false;
- tab_UserManage.Controls.Add(UserForm);
+ tab_UserManage1.Controls.Add(UserForm);
UserForm.InitUser();
UserForm.Show();
@@ -127,13 +143,186 @@ namespace PBAnaly.UI
{
if (UserManage.LogionUser.Role == UserRole.SuperAdministrator)
{
- tab_UserManage.Parent = tabMain;
+ tab_UserManage1.Parent = tab_Main;
}
else
{
- tab_UserManage.Parent = null;
+ tab_UserManage1.Parent = null;
}
}
}
+
+ #region OnGlobalDataPropertyChanged 处理全局属性更改事件
+ ///
+ /// 处理全局属性更改事件
+ ///
+ /// 发生变化的属性名
+ /// 更改的属性值
+ private void OnGlobalDataPropertyChanged(string name, string value)
+ {
+ switch (name)
+ {
+ case "Language":
+ if (GlobalData.GetProperty("Language") == "Chinese")
+ {
+ SetLanguage("zh-CN");
+ }
+ else
+ {
+ SetLanguage("en-US");
+ }
+ break;
+ default:
+ break;
+ }
+ }
+
+ #endregion
+
+ #region 中英文切换
+ ResourceManager resourceManager;
+ private void SetLanguage(string cultureCode)
+ {
+ resourceManager = new ResourceManager("PBAnaly.Properties.Resources", typeof(MainForm).Assembly);
+
+ // 设置当前线程的文化信息
+ Thread.CurrentThread.CurrentUICulture = new CultureInfo(cultureCode);
+
+ // 更新所有控件的文本
+ UpdateControlsText();
+ }
+
+ // 更新所有控件的文本
+ private void UpdateControlsText()
+ {
+ //// 遍历所有控件并更新文本
+ foreach (Control control in this.Controls)
+ {
+ UpdateControlText(control);
+ }
+ }
+ // 更新单个控件的文本
+ private void UpdateControlText(Control control)
+ {
+ //// 直接通过控件的 Name 属性获取资源字符串
+ string resourceText = resourceManager.GetString(control.Name);
+ if (!string.IsNullOrEmpty(resourceText))
+ {
+ control.Text = resourceText;
+ }
+
+ // 如果控件包含子控件,则递归更新子控件
+ foreach (Control subControl in control.Controls)
+ {
+ UpdateControlText(subControl);
+ }
+ }
+
+ #endregion
+
+ #region btn_Close_Click 窗口关闭按钮
+ private void btn_Close_Click(object sender, EventArgs e)
+ {
+ this.Close();
+ }
+ #endregion
+
+ #region LoadSystemParam 加载系统参数
+ ///
+ /// 加载系统参数
+ ///
+ private void LoadSystemParam()
+ {
+ try
+ {
+ cbx_System_Language.Text = GlobalData.GetProperty("Language") == "English" ? "English" : "简体中文";
+ }
+ catch (Exception)
+ {
+
+ }
+ }
+
+ #endregion
+
+ #region btn_SystemSetting_Click 系统设置按钮
+ private void btn_SystemSetting_Click(object sender, EventArgs e)
+ {
+ OperatingRecord.CreateRecord("系统设置按钮", "点击事件");
+ this.tab_Main.SelectedIndex = 0;
+
+ SetMainMenuButtonCilkeColor(((Button)sender).Name);
+ }
+ #endregion
+
+ #region btn_UserManager_Click 用户管理按钮
+ private void btn_UserManager_Click(object sender, EventArgs e)
+ {
+ OperatingRecord.CreateRecord("用户管理按钮", "点击事件");
+ this.tab_Main.SelectedIndex = 1;
+
+ SetMainMenuButtonCilkeColor(((Button)sender).Name);
+ }
+ #endregion
+
+ #region SetMainMenuButtonCilkeColor 主菜单中按钮点击之后,设置按钮的前景色和背景色
+ ///
+ /// 主菜单中按钮点击之后,设置按钮的前景色和背景色
+ ///
+ /// 点击的按钮的名称
+ private void SetMainMenuButtonCilkeColor(string strBtnName)
+ {
+ foreach (Control control in pnl_MainMenu.Controls)
+ {
+ if (control.Name == pnl_MainMenu.Name)
+ {
+ continue;
+ }
+ else if (control.Name == strBtnName)
+ {
+ control.BackColor = Color.White;
+ control.ForeColor = Color.Black;
+ }
+ else
+ {
+ control.BackColor = ColorTranslator.FromHtml("30, 56, 83");
+ control.ForeColor = Color.White;
+ }
+ }
+ }
+ #endregion
+
+ #region btn_save_ZH_US_Click 系统参数保存按钮
+ private void btn_save_ZH_US_Click(object sender, EventArgs e)
+ {
+ try
+ {
+ if(GlobalData.GetProperty("Language") != cbx_System_Language.Text)
+ {
+ OperatingRecord.CreateRecord("系统参数保存按钮",
+ $"系统语言由{GlobalData.GetProperty("Language")}修改为:{cbx_System_Language.Text}");
+ if (cbx_System_Language.Text == "English")
+ {
+ SetLanguage("en-US");
+ GlobalData.SetProperty("Language", "English");
+ }
+ else
+ {
+ SetLanguage("zh-CN");
+ GlobalData.SetProperty("Language", "Chinese");
+ }
+ }
+
+
+ MessageBox.Show("保存成功");
+
+ }
+ catch (Exception ex)
+ {
+ MessageBox.Show($"保存失败,原因:{ex.Message.ToString()}");
+ }
+
+ }
+ #endregion
}
}