|
|
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using DevExpress.XtraEditors; using DevExpress.XtraNavBar; using ICSSoft.Frame.Menu.BLL; using ICSSoft.Base.Config.AppConfig; using ICSSoft.Frame.User.BLL; using ICSSoft.Base.Language.Tool; using ICSSoft.Base.UserControl.MessageControl; using ICSSoft.Frame.Menu.Entity; using ICSSoft.Frame.Menu.MenuManage; using System.IO; using ICSSoft.Base.Config.DBHelper; using System.Reflection; using System.Runtime.InteropServices;
namespace ICSSoft.Frame.Main.Entrance {
public partial class FormMainNew : DevExpress.XtraEditors.XtraForm {
[DllImport("user32.dll", EntryPoint = "GetWindowLong", CharSet = CharSet.Auto)] public static extern int GetWindowLong(HandleRef hWnd, int nIndex);
[DllImport("user32.dll", EntryPoint = "SetWindowLong", CharSet = CharSet.Auto)] public static extern IntPtr SetWindowLong(HandleRef hWnd, int nIndex, int dwNewLong);
public void SetForm() { int WS_SYSMENU = 0x00080000; // 系统菜单
int WS_MINIMIZEBOX = 0x20000; // 最大最小化按钮
int windowLong = (GetWindowLong(new HandleRef(this, this.Handle), -16)); SetWindowLong(new HandleRef(this, this.Handle), -16, windowLong | WS_SYSMENU | WS_MINIMIZEBOX); }
FormTableMenu fMenu = null; SysMenuBLL menuBll = new SysMenuBLL(); Dictionary<string, TreeView> treeDic = new Dictionary<string, TreeView>(); public FormMainNew() { InitializeComponent();
this.MaximumSize = new Size(Screen.PrimaryScreen.WorkingArea.Width, Screen.PrimaryScreen.WorkingArea.Height); this.WindowState = FormWindowState.Maximized; //lblUserName.Text = ;
lblWorkPointName.Text = AppConfig.WorkPointName; lblRole.Text = (AppConfig.UserCode.ToLower() == "demo" ? "程序开发者" : (AppConfig.AdminFlag == true ? "系统管理员" : "普通用户")) + "/" + AppConfig.UserName; //lblCompanyName.Text = AppConfig.CompanyName;
BindNav();
SetForm(); } private void BindNav() { navMain.ForeColor = Color.FromArgb(102, 102, 102); DataTable navData = menuBll.GetSysMenuStruct("", true); foreach (DataRow dr in navData.Rows) { NavBarGroup group = new NavBarGroup(dr["MenuCaption"].ToString()); group.Tag = dr["ID"]; string fileName = Path.GetFileNameWithoutExtension(AppConfig.ImagesPath + dr["TableImage"].ToString()); string forder = dr["TableImage"].ToString().Replace(Path.GetFileName(AppConfig.ImagesPath + dr["TableImage"].ToString()), ""); fileName = forder + fileName + "32" + Path.GetExtension(AppConfig.ImagesPath + dr["TableImage"].ToString()); group.SmallImage = Image.FromFile(AppConfig.ImagesPath + fileName); // group.SmallImage = Image.FromFile(AppConfig.ResourcePath + dr["TableImage"].ToString());
navMain.Groups.Add(group); } FillNavGroup(); } private void FillNavGroup() { foreach (NavBarGroup g in navMain.Groups) { NavBarGroupControlContainer gc = new NavBarGroupControlContainer(); TreeView treeMain = null; // bool isNew = false;
if (treeDic.ContainsKey(g.Tag.ToString())) { gc.Controls.Remove(treeDic[g.Tag.ToString()]); gc.Controls.Add(treeDic[g.Tag.ToString()]); g.ControlContainer = gc;
} else { treeMain = new TreeView(); treeMain.ShowPlusMinus = false; treeMain.Name = g.Tag.ToString(); treeMain.StateImageList = AppConfig.NewSysImageList; treeMain.Dock = DockStyle.Fill; treeMain.AfterExpand += new TreeViewEventHandler(treeMenu_AfterExpand); treeMain.AfterCollapse += new TreeViewEventHandler(treeMenu_AfterCollapse); treeMain.NodeMouseDoubleClick += new TreeNodeMouseClickEventHandler(treeMain_NodeMouseDoubleClick); treeDic.Add(g.Tag.ToString(), treeMain);
DataTable data = menuBll.GetSysMenuStruct(g.Tag.ToString(), true); foreach (DataRow obj in data.Rows) {
TreeNode tn = new TreeNode(obj["MenuCaption"].ToString()); tn.Tag = obj["ID"].ToString(); tn.StateImageIndex = AppConfig.NewSysImageList.Images.IndexOfKey(obj["NExImage"].ToString());
treeMain.Nodes.Add(tn); BindSonNode(tn); } gc.Controls.Add(treeMain); g.ControlContainer = gc; }
}
} private void BindSonNode(TreeNode mainTn) { DataTable data = menuBll.GetSysMenuStruct(mainTn.Tag.ToString(), true); foreach (DataRow obj in data.Rows) {
TreeNode tn = new TreeNode(obj["MenuCaption"].ToString()); tn.Tag = obj["ID"];
tn.StateImageIndex = AppConfig.NewSysImageList.Images.IndexOfKey(obj["NExImage"].ToString());
mainTn.Nodes.Add(tn); BindSonNode(tn); } } SysUserBLL userBll = new SysUserBLL();
#region 反射窗体
//通用窗体入口
public struct ChildWinManagement { public static string WinCaption(string r) { return r; } public static bool ExistWin(TabControl tc, string caption) { if (caption == "产品报工(新)") { return false; } bool R = false; foreach (TabPage f in tc.TabPages) { if (f.Text == caption) { R = true; tc.SelectedTab = f; break; } } return R; } } //系统入口方法
public void CreateFormShow(string MDll, string MCode, string MName, string MForm, bool IsShowDialog, string FormKeyValue, bool maxFlag) { try { bool canEnterFlag = AppConfig.GetUserExcuteRight(MCode, "see"); if (canEnterFlag == false) { throw new Exception("对不起,您无权限使用该功能!"); } if (!this.splitContainer1.Panel2.Controls.ContainsKey("MDIForms")) { TabControl tc = new TabControl(); tc.Name = "MDIForms"; tc.Parent = this.splitContainer1.Panel2; tc.Dock = DockStyle.Fill;
}
Form f = new Form(); string typeName = MDll + "." + MForm; Assembly assembly = Assembly.LoadFrom(Application.StartupPath + @"\" + MDll + ".dll"); // 实例化窗体
Type t = assembly.GetType(typeName);
if (!string.IsNullOrEmpty(FormKeyValue)) { FormKeyValue = FormKeyValue.Substring(0, FormKeyValue.Length - 1); object[] strs = FormKeyValue.Split(','); f = Activator.CreateInstance(t, strs) as Form; } else { f = Activator.CreateInstance(t) as Form; } f.Name = MForm; f.Tag = MCode; if (this == null) { f.Text = MName; f.WindowState = (maxFlag == true ? FormWindowState.Maximized : FormWindowState.Normal); f.Text = MName; f.Tag = MCode; f.ShowDialog();
} else { if (!ChildWinManagement.ExistWin((TabControl)this.splitContainer1.Panel2.Controls["MDIForms"], MName)) { if (IsShowDialog == false) {
TabPage tab = new TabPage(); tab.Name = MCode; tab.Text = MName;
f.TopLevel = false; //f.MdiParent = this;
f.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; f.Dock = DockStyle.Fill; f.Text = MName; f.Tag = MCode;
tab.Controls.Add(f);
((TabControl)this.splitContainer1.Panel2.Controls["MDIForms"]).TabPages.Add(tab); ((TabControl)this.splitContainer1.Panel2.Controls["MDIForms"]).SelectedTab = tab; f.Show(); f.BringToFront();
AppConfig.tc = (TabControl)this.splitContainer1.Panel2.Controls["MDIForms"];
} else { f.WindowState = (maxFlag == true ? FormWindowState.Maximized : FormWindowState.Normal); f.Text = MName; f.Tag = MCode; f.ShowDialog(); } } }
} catch (Exception ex) { throw ex; }
} #endregion
private void treeMain_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e) { var obj = menuBll.GetSingleMenuByID(e.Node.Tag.ToString()); if (obj == null) return;
if (obj.FormFlag) { if (obj.StartFlag == false) return; try { CreateFormShow(obj.FormAssem, obj.MenuCode, obj.MenuCaption, obj.FormName, obj.DialogFlag, obj.FormParameters, obj.MaxWindow); userBll.InsertLogin("N", AppConfig.UserCode, "使用" + obj.MenuCaption + "功能"); } catch (Exception ex) { userBll.InsertLogin("N", AppConfig.UserCode, "使用" + obj.MenuCaption + "功能发生异常:" + ex.Message); List<LangObj> objList = new List<LangObj>(); LangObj mobj = new LangObj(); mobj.LConvertString = ex.Message; mobj.LParameters = new object[] { }; objList.Add(mobj); MessageDialog msg = new MessageDialog(2, objList); msg.ShowDialog(); } } }
private void treeMenu_AfterCollapse(object sender, TreeViewEventArgs e) { string menuId = e.Node.Tag.ToString(); Sys_Menu menuObj = menuBll.GetSingleMenuByID(menuId); if (menuObj != null) { e.Node.StateImageIndex = AppConfig.NewSysImageList.Images.IndexOfKey(menuObj.NExImage); // e.Node.SelectedImageIndex = AppConfig.SysImageList.Images.IndexOfKey(menuObj.NExImage);
} }
private void treeMenu_AfterExpand(object sender, TreeViewEventArgs e) { string menuId = e.Node.Tag.ToString(); Sys_Menu menuObj = menuBll.GetSingleMenuByID(menuId); if (menuObj != null) { e.Node.StateImageIndex = AppConfig.NewSysImageList.Images.IndexOfKey(menuObj.ExImage); //e.Node.SelectedImageIndex = AppConfig.SysImageList.Images.IndexOfKey(menuObj.ExImage);
} } private void FormMain_Load(object sender, EventArgs e) { LanguageConvert.ChangeLanguage(this, "1");
navMain.Visible = false; fMenu = new FormTableMenu(); fMenu.TopLevel = false; fMenu.MdiParent = this; fMenu.Parent = this.FormShowControl; fMenu.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; fMenu.Dock = DockStyle.Fill; fMenu.Show(); fMenu.BringToFront(); }
private void btnExit_Click(object sender, EventArgs e) { this.Close(); }
private void FormMain_FormClosing(object sender, FormClosingEventArgs e) { if (reStart == 0) { List<LangObj> langList = new List<LangObj>(); LangObj obj = new LangObj(); obj.LConvertString = "确定退出管理系统吗?"; obj.LParameters = new object[] { }; langList.Add(obj); RequestionDialog formRequestion = new RequestionDialog(langList); if (formRequestion.ShowDialog() == DialogResult.OK) { string sql = @"DECLARE @Table NVARCHAR(60)
DECLARE tmpCur CURSOR FOR SELECT name FROM sys.objects WHERE TYPE='U' AND name LIKE N'TEMP_%' OPEN tmpCur FETCH NEXT FROM tmpCur INTO @Table WHILE @@FETCH_STATUS = 0 BEGIN DECLARE @sql VARCHAR(200) SELECT @sql = 'drop table ' + @Table EXEC(@sql) FETCH NEXT FROM tmpCur INTO @Table END CLOSE tmpCur DEALLOCATE tmpCur";
DBHelper.ExecuteNonQuery(AppConfig.AppConnectString, CommandType.Text, sql); e.Cancel = false; XtraForm formMain = (XtraForm)this.Tag; formMain.Close(); } else { reStart = 0; e.Cancel = true; } }
}
private void btnModifyPwd_Click(object sender, EventArgs e) { List<LangObj> langList = new List<LangObj>(); FormEditPwd feditPwd = new FormEditPwd(AppConfig.WorkPointCode, AppConfig.UserCode, AppConfig.FromMd5(AppConfig.UserPwd)); if (feditPwd.ShowDialog() == DialogResult.OK) { LangObj langObj = new LangObj(); langObj.LConvertString = "修改成功"; langObj.LParameters = new object[] { }; langList.Add(langObj); if (langList.Count > 0) { MessageDialog messBox = new MessageDialog(0, langList); messBox.ShowDialog();
} } }
private void btnMyMenu_Click(object sender, EventArgs e) { FormUserDefineMenu formUserDefine = new FormUserDefineMenu(); formUserDefine.ShowDialog(); }
private void btnSysMenu_Click(object sender, EventArgs e) { if (navMain.Visible == true) { navMain.Visible = false; foreach (Form cform in this.MdiChildren) { cform.Close(); } fMenu = new FormTableMenu(); fMenu.TopLevel = false; fMenu.MdiParent = this; fMenu.Parent = this.FormShowControl; fMenu.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; fMenu.Dock = DockStyle.Fill; fMenu.Show(); fMenu.BringToFront(); } else { if (fMenu != null) { fMenu.Close(); } navMain.Visible = true; } }
private void btnInfoCenter_Click(object sender, EventArgs e) { try { Sys_Menu obj = menuBll.GetSingleMenuByCode("01.07.03"); AppConfig.CreateFormShow(obj.FormAssem, obj.MenuCode, obj.MenuCaption, obj.FormName, obj.DialogFlag, this, obj.FormParameters, obj.MaxWindow); } catch (Exception ex) { List<LangObj> objList = new List<LangObj>(); LangObj mobj = new LangObj(); mobj.LConvertString = ex.Message; mobj.LParameters = new object[] { }; objList.Add(mobj); MessageDialog msg = new MessageDialog(2, objList); msg.ShowDialog(); }
}
int reStart = 0; private void btnLogOut_Click(object sender, EventArgs e) { List<LangObj> langList = new List<LangObj>(); LangObj obj = new LangObj(); obj.LConvertString = "确定重新注册系统吗?"; obj.LParameters = new object[] { }; langList.Add(obj); RequestionDialog formRequestion = new RequestionDialog(langList); if (formRequestion.ShowDialog() == DialogResult.OK) { reStart = 1; Program.Run.Close(); Application.Restart();
} reStart = 0; }
private void btnMinWindow_Click(object sender, EventArgs e) { this.WindowState = FormWindowState.Minimized; }
private void btnExit_MouseHover(object sender, EventArgs e) { this.btnExit.BorderStyle = BorderStyle.FixedSingle; }
private void btnExit_MouseLeave(object sender, EventArgs e) { this.btnExit.BorderStyle = BorderStyle.None; }
private void btnMaxWindow_Click(object sender, EventArgs e) { this.WindowState = FormWindowState.Maximized; }
private void btnMaxWindow_MouseHover(object sender, EventArgs e) { this.btnMaxWindow.BorderStyle = BorderStyle.FixedSingle; }
private void btnMaxWindow_MouseLeave(object sender, EventArgs e) { this.btnMaxWindow.BorderStyle = BorderStyle.None; }
private void btnMinWindow_MouseHover(object sender, EventArgs e) { this.btnMinWindow.BorderStyle = BorderStyle.FixedSingle; }
private void btnMinWindow_MouseLeave(object sender, EventArgs e) { this.btnMinWindow.BorderStyle = BorderStyle.None; }
private void btnLogOut_MouseHover(object sender, EventArgs e) { this.btnLogOut.BorderStyle = BorderStyle.FixedSingle; }
private void btnLogOut_MouseLeave(object sender, EventArgs e) { this.btnLogOut.BorderStyle = BorderStyle.None; }
private void btnModifyPwd_MouseHover(object sender, EventArgs e) { this.btnModifyPwd.BorderStyle = BorderStyle.FixedSingle; }
private void btnModifyPwd_MouseLeave(object sender, EventArgs e) { this.btnModifyPwd.BorderStyle = BorderStyle.None; }
private void btnSysMenu_MouseHover(object sender, EventArgs e) { this.btnSysMenu.BackColor = Color.FromArgb(230, 230, 235); this.picSysMenu.Image = Image.FromFile(Application.StartupPath + "\\Images\\side_nav_1_icon_active.png"); this.lblSysMenu.ForeColor = Color.FromArgb(53, 53, 53); }
private void btnSysMenu_MouseLeave(object sender, EventArgs e) { this.btnSysMenu.BackColor = Color.FromArgb(245, 245, 247); this.picSysMenu.Image = Image.FromFile(Application.StartupPath + "\\Images\\side_nav_1_icon.png"); this.lblSysMenu.ForeColor = Color.FromArgb(102, 102, 102); }
private void btnMyMenu_MouseHover(object sender, EventArgs e) { this.btnMyMenu.BackColor = Color.FromArgb(230, 230, 235); this.picMyMenu.Image = Image.FromFile(Application.StartupPath + "\\Images\\side_nav_2_icon_active.png"); this.lblMyMenu.ForeColor = Color.FromArgb(53, 53, 53); }
private void btnMyMenu_MouseLeave(object sender, EventArgs e) { this.btnMyMenu.BackColor = Color.FromArgb(245, 245, 247); this.picMyMenu.Image = Image.FromFile(Application.StartupPath + "\\Images\\side_nav_2_icon.png"); this.lblMyMenu.ForeColor = Color.FromArgb(102, 102, 102); }
private void btnInfoCenter_MouseHover(object sender, EventArgs e) { this.btnInfoCenter.BackColor = Color.FromArgb(230, 230, 235); this.picInfoCenter.Image = Image.FromFile(Application.StartupPath + "\\Images\\side_nav_3_icon_active.png"); this.lblInfoCenter.ForeColor = Color.FromArgb(53, 53, 53); }
private void btnInfoCenter_MouseLeave(object sender, EventArgs e) { this.btnInfoCenter.BackColor = Color.FromArgb(245, 245, 247); this.picInfoCenter.Image = Image.FromFile(Application.StartupPath + "\\Images\\side_nav_3_icon.png"); this.lblInfoCenter.ForeColor = Color.FromArgb(102, 102, 102); }
} }
|