You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

189 lines
7.2 KiB
C#

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<ButtonEx> buttons = new List<ButtonEx>();
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);
}
}
}