using Rs.Controls; using Rs.DataAccess; using Rs.Framework; using Rs.MotionPlat.Commom; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Reflection; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace Rs.MotionPlat { public partial class SubMenuForm : BaseForm { List buttons = new List(); ButtonEx selectedBtn = null; string m_category = ""; SqliteHelper db = new SqliteHelper(); public SubMenuForm(string category) { InitializeComponent(); m_category = category; } private void SubMenuForm_Load(object sender, EventArgs e) { LoadMenu(); } public void ReloadMenu() { string lang = Properties.Settings.Default.DefaultLanguage; string querySql = $"select * from submenus where enable=1 and category='{m_category}' order by sortindex asc"; DataTable dt = db.GetDataTable(querySql); if (dt != null && dt.Rows.Count > 0) { //tableLayoutPanel1.Controls.Clear(); // tableLayoutPanel1.ColumnCount = dt.Rows.Count + 1; //tableLayoutPanel1.ColumnStyles.Clear(); int i = 0; foreach (DataRow dr in dt.Rows) { if (dr["needlogin"].ToString()=="0" || GlobalUser.IsVender()) { foreach (ButtonEx btn in buttons) { DataRow drBtn = (DataRow)btn.Tag; if (dr["showtext"].ToString() == drBtn["showText"].ToString()) { btn.ShowText = lang == "zh-CN" ? dr["showtext"].ToString() : dr["showentext"].ToString(); } } //tableLayoutPanel1.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, int.Parse(dr["width"].ToString()))); //ButtonEx button = new ButtonEx(); //button.Tag = dr; //button.Click += Button_Click; //button.Cursor = Cursors.Hand; //button.BackColor = Color.FromArgb(19, 52, 104); //button.SelectedColor = Color.DarkRed; //button.FlatStyle = FlatStyle.Flat; //button.Margin = new Padding(0); //button.ForeColor = Color.White; //button.Dock = DockStyle.Fill; //button.ShowText = lang == "zh-CN" ? dr["showtext"].ToString() : dr["showentext"].ToString(); //tableLayoutPanel1.Controls.Add(button, i++, 0); } } } } public void SelectTab() { if(selectedBtn!=null) { selectedBtn.PerformClick(); } } private void LoadMenu() { string lang = Properties.Settings.Default.DefaultLanguage; string querySql = $"select * from submenus where enable=1 and category='{m_category}' order by sortindex asc"; DataTable dt = db.GetDataTable(querySql); if(dt!=null&&dt.Rows.Count>0) { buttons.Clear(); tableLayoutPanel1.ColumnCount= dt.Rows.Count+1; tableLayoutPanel1.ColumnStyles.Clear(); int i = 0; foreach(DataRow dr in dt.Rows) { if (dr["needlogin"].ToString() == "0" || GlobalUser.IsVender()) { tableLayoutPanel1.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, int.Parse(dr["width"].ToString()))); ButtonEx button = new ButtonEx(); button.Tag = dr; button.Click += Button_Click; button.Cursor = Cursors.Hand; button.BackColor = Color.FromArgb(19, 52, 104); button.SelectedColor = Color.DarkRed; button.FlatStyle = FlatStyle.Flat; button.Margin = new Padding(0); button.ForeColor = Color.White; button.Dock = DockStyle.Fill; button.ShowText = lang == "zh-CN" ? dr["showtext"].ToString() : dr["showentext"].ToString(); tableLayoutPanel1.Controls.Add(button, i++, 0); buttons.Add(button); } } if(tableLayoutPanel1.Controls.Count>0) { ((ButtonEx)tableLayoutPanel1.Controls[0]).PerformClick(); } } } private void Button_Click(object sender, EventArgs e) { foreach (var btn in tableLayoutPanel1.Controls) { if(btn is ButtonEx) { ((ButtonEx)btn).Selected = false; } } ButtonEx button=(ButtonEx)sender; button.Selected = true; button.Invalidate(); selectedBtn=button; DataRow dr = (DataRow)button.Tag; if(dr!=null) { string formname = dr["formname"].ToString(); Assembly dll = Assembly.LoadFile(Application.StartupPath+ "\\Rs.MotionPlat.exe"); object obj = null; if (dr["key"].ToString()!="") { obj = dll.CreateInstance(formname, true, BindingFlags.Public | BindingFlags.Instance,null, new object[] { dr["key"].ToString() }, null, null); } else { obj = dll.CreateInstance(formname); } if(obj is Form) { if (dr["target"].ToString()=="_blank") { Form subForm = (Form)obj; subForm.StartPosition = FormStartPosition.CenterScreen; subForm.Show(); } else { foreach (var item in panelMain.Controls) { if (item is Form) (item as Form).Close(); } panelMain.Controls.Clear(); Form subForm = (Form)obj; subForm.TopLevel = false; subForm.Dock = DockStyle.Fill; subForm.Visible = true; panelMain.Controls.Add(subForm); } } } } protected override void OnClosed(EventArgs e) { if (panelMain != null) { if(panelMain.Controls.Count>0) { ((Form)panelMain.Controls[0]).Close(); } panelMain.Controls.Clear(); } base.OnClosed(e); } } }