using ComponentFactory.Krypton.Docking; using ComponentFactory.Krypton.Navigator; using ComponentFactory.Krypton.Toolkit; using NXWMS.Client.Model.AppModels.Condition.SysSettings; using NXWMS.Client.Model.AppModels.Result.SysSettings; using NXWMS.Commons; using NXWMS.Forms.Balance; using NXWMS.Forms.SysSettings; //using NXWMS.MainFormChild; using NXWMS.Models; using NXWMS.Services; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Diagnostics; using System.Drawing; using System.Linq; using System.Runtime.Remoting; using System.Text; using System.Windows.Forms; namespace NXWMS { public partial class MainForm : KryptonForm { /// /// 菜单页面跳转框体 /// private KryptonNavigator _navigatorPage { get; set; } public MainForm() { InitializeComponent(); InitData(); InitControl(); BasDictionaryUtil.GetAndSetBasDictionary(); } protected override CreateParams CreateParams { get { CreateParams cp = base.CreateParams; cp.ExStyle |= 0x02000000; return cp; } } /// /// 初始化数据 /// private void InitData() { //TODO暂时放所有 AppConfig.MenuUserGroupList = SysSettingsServices.menuService.GetLevelList(new MenuLevelCondition { }).Data; treeMenu.NodeMouseDoubleClick += new System.Windows.Forms.TreeNodeMouseClickEventHandler(this.TreeMenuNodeDoubleClick); } /// /// 初始化控制 /// private void InitControl() { foreach (Control item in kryptonNavigatorTop.Controls) { foreach (Control itemDetail in item.Controls) { if (itemDetail.Tag != null) { var menuSmall = kryptonNavigatorMain.Pages.Where(s => s.Tag == itemDetail.Tag && s.Tag != null).FirstOrDefault(); if (menuSmall != null) { menuSmall.ImageMedium = (itemDetail as KryptonPage).ImageSmall; menuSmall.ImageSmall = (itemDetail as KryptonPage).ImageSmall; menuSmall.ImageLarge = (itemDetail as KryptonPage).ImageSmall; menuSmall.TextTitle = "菜单"; } var menuResult1 = AppConfig.MenuUserGroupList.Where(m => m.MainMenuCode == itemDetail.Tag.ToString()); if (menuResult1.Any()) { if (menuSmall != null) { menuSmall.Enabled = true; } itemDetail.Visible = true; continue; } else { if (menuSmall != null) { menuSmall.Enabled = false; } } } itemDetail.Enabled = false; } } lbName.Text = AppConfig.UserLoginResult.UserInfo.NickName; this.kryptonNavigatorMain.SelectedPageChanged += new System.EventHandler(this.kryptonNavigatorMain_SelectedPageChanged); toolStripStatusLabelVer.Text = string.Format(toolStripStatusLabelVer.Text, "0.0.0.1"); toolStripStatusLabelUser.Text = string.Format(toolStripStatusLabelUser.Text, AppConfig.UserLoginResult.UserInfo.UserName); toolStripStatusLabelMessage.Visible = true; this.imageList.Images.Add("folder.ico", global::NXWMS.Properties.Resources.folder); this.imageList.Images.Add("DIR.ico", global::NXWMS.Properties.Resources.DIR); this.imageList.Images.SetKeyName(0, "folder.ico"); this.imageList.Images.SetKeyName(1, "DIR.ico"); toolStrip2.Dock = DockStyle.Left; toolStrip1.Dock = DockStyle.Left; toolStrip3.Dock = DockStyle.Left; } /// /// 树节点双击事件 /// /// /// public void TreeMenuNodeDoubleClick(object sender, TreeNodeMouseClickEventArgs e) { try { var menuView = sender as KryptonTreeView; var selectedNode = menuView.SelectedNode; if (selectedNode == null || selectedNode.Parent == null) { return; } var openNode = AppConfig.MenuOpenList.Where(s => s.Code == selectedNode.Name).FirstOrDefault(); if (openNode != null) { navigatorTab.SelectedPage = navigatorTab.Pages[selectedNode.Name]; AppConfig.CurrentMenu = AppConfig.MenuUserGroupList.Where(m => m.MenuCode == selectedNode.Name).ToList(); openNode.Form.WindowState = FormWindowState.Maximized; openNode.Form.Activate(); return; } //限定打开个数 if (AppConfig.MenuOpenList.Count() > AppConfig._MaxFormCount) { KryptonMessageBox.Show($"当前打开窗体过多,影响系统运行速度\r\n\r\n请关闭其它窗体,在进行打开新菜单窗体!", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } var newPage = new KryptonPage { Text = selectedNode.Text, Name = selectedNode.Name,ImageSmall= global::NXWMS.Properties.Resources.form}; AppConfig.CurrentMenu = AppConfig.MenuUserGroupList.Where(m => m.MenuCode == selectedNode.Name).ToList(); var objectHandle = Activator.CreateInstance(null, AppConfig.CurrentMenu.FirstOrDefault().MenuURL); var frm = (Form)objectHandle.Unwrap(); var selectModel = new MenuModel { Caption = selectedNode.Text, Code = selectedNode.Name, Form = frm, KryptonPage = newPage, MenuGroup = new MenuGroupModel { Caption = AppConfig.CurrentMenu.FirstOrDefault().MainMenuName, Code = AppConfig.CurrentMenu.FirstOrDefault().MainMenuCode, } }; navigatorTab.MouseDown += new MouseEventHandler(this.EventTabMenu_MouseDown); navigatorTab.Pages.Add(newPage); navigatorTab.SelectedPage = newPage; navigatorTab.Refresh(); AppConfig.MenuOpenList.Add(selectModel); this.OpenFrom(selectModel.Form, newPage); selectModel.Form.Text = selectedNode.Text; } catch (Exception ex) { KryptonMessageBox.Show($"加载窗体错误!\r\n" + ex.Message, "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Error); } } /// /// 打开窗体 /// /// private void OpenFrom(Form objFrm, KryptonPage parePage) { objFrm.TopLevel = false; objFrm.WindowState = FormWindowState.Maximized; objFrm.MinimizeBox = false; objFrm.FormBorderStyle = FormBorderStyle.None; objFrm.Dock = DockStyle.Fill; objFrm.Parent = parePage; objFrm.Show(); } /// /// 顶部Tab右键 /// /// /// private void EventTabMenu_MouseDown(object sender, MouseEventArgs e) { _navigatorPage = sender as KryptonNavigator; if (e.Button == MouseButtons.Right) { contextMenuStripTab.Show(MousePosition.X, MousePosition.Y); } } /// /// 切换按钮 /// /// /// private void kryptonNavigatorTop_SelectedPageChanged(object sender, EventArgs e) { var selectPage = kryptonNavigatorTop.SelectedPage; var result = AppConfig.MenuUserGroupList.Where(m => m.MainMenuCode == selectPage.Tag.ToString()); SetButtonItemMenus(result.ToList()); var menuPage = kryptonNavigatorMain.Pages.Where(s => s.Tag == selectPage.Tag && s.Tag != null).FirstOrDefault(); if (menuPage != null) { kryptonNavigatorMain.SelectedPage = menuPage; menuPage.Controls.Clear(); menuPage.Controls.Add(treeMenu); } var currentMenCode = AppConfig.CurrentMenu.FirstOrDefault(); if (currentMenCode != null) { if (result.Where(s => s.MenuCode == currentMenCode.MenuCode).Any()) { treeMenu.SelectedNode = treeMenu.Nodes[currentMenCode.MenuCode]; } } } /// /// 设置按钮组菜单列表 /// /// public void SetButtonItemMenus(List menuLevelResult) { treeMenu.Scrollable = true; treeMenu.ShowPlusMinus = true; treeMenu.ShowRootLines = true; treeMenu.SelectedNode = null; treeMenu.HideSelection = false; treeMenu.Nodes.Clear(); foreach (var item in (from x in menuLevelResult.ToList() select new { x.MainMenuId, x.MainMenuName, x.MainMenuCode, x.MainMenuOrder, x.MainMenuURL }).Distinct()) { var f1 = treeMenu.Nodes.Add(item.MainMenuCode, item.MainMenuName, 0); foreach (var itemDetail in (from x in menuLevelResult.Where(m => m.MainMenuCode == item.MainMenuCode) select new { x.MenuCode, x.MenuName, x.MenuId, x.MenuOrder, x.MenuURL }).Distinct()) { f1.Nodes.Add(itemDetail.MenuCode, itemDetail.MenuName, 1); } } treeMenu.ExpandAll(); } /// /// 关闭其它所有窗体 /// /// /// private void 关闭其它所有窗口ToolStripMenuItem_Click(object sender, EventArgs e) { if (MessageBox.Show("确认关闭其它所有窗口?", "提示信息", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes) { var formExecList = AppConfig.MenuOpenList.Where(m => m.Caption != _navigatorPage.SelectedPage.Text.ToString()).ToList(); if (formExecList.Any()) { for (int i = formExecList.Count() - 1; i >= 0; i--) { formExecList[i].Form.Hide(); _navigatorPage.Pages.Remove(formExecList[i].KryptonPage); _navigatorPage.Refresh(); AppConfig.MenuOpenList.Remove(formExecList[i]); } } } } /// /// 关闭当前窗体 /// /// /// private void 关闭ToolStripMenuItem_Click(object sender, EventArgs e) { var formExec = AppConfig.MenuOpenList.Where(m => m.Caption == _navigatorPage.SelectedPage.Text.ToString()). FirstOrDefault(); if (formExec != null) { formExec.Form.Hide(); _navigatorPage.Pages.Remove(_navigatorPage.SelectedPage); _navigatorPage.Refresh(); AppConfig.MenuOpenList.Remove(formExec); } } /// /// 关闭所有窗体 /// /// /// private void 关闭所有窗口ToolStripMenuItem_Click(object sender, EventArgs e) { if (MessageBox.Show("确认关闭所有窗口?", "提示信息", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes) { var formExecList = AppConfig.MenuOpenList.ToList(); if (formExecList.Any()) { for (int i = formExecList.Count() - 1; i >= 0; i--) { formExecList[i].Form.Hide(); _navigatorPage.Pages.Remove(formExecList[i].KryptonPage); _navigatorPage.Refresh(); AppConfig.MenuOpenList.Remove(formExecList[i]); } } } } private void MainForm_FormClosed(object sender, FormClosedEventArgs e) { Application.Exit(); } private void kryptonNavigatorMain_SelectedPageChanged(object sender, EventArgs e) { var page = kryptonNavigatorMain.SelectedPage; kryptonNavigatorTop.SelectedPage = (kryptonNavigatorTop.Pages.Where(s => s.Tag == page.Tag).FirstOrDefault()); kryptonNavigatorTop_SelectedPageChanged(null,null); } private void toolStripButtonRe_Click(object sender, EventArgs e) { SendKeys.SendWait("^X"); } private void toolStripButtonDelete_Click(object sender, EventArgs e) { SendKeys.SendWait("{DEL}"); } private void toolStripButtonSa_Click(object sender, EventArgs e) { SendKeys.SendWait("^V"); } private void toolStripButtonCopy_Click(object sender, EventArgs e) { SendKeys.SendWait("^C"); } private void 剪切ToolStripMenuItem_Click(object sender, EventArgs e) { toolStripButtonRe_Click(null, null); } private void 删除ToolStripMenuItem_Click(object sender, EventArgs e) { toolStripButtonDelete_Click(null, null); } private void 粘贴ToolStripMenuItem_Click(object sender, EventArgs e) { toolStripButtonCopy_Click(null, null); } private void 复制ToolStripMenuItem_Click(object sender, EventArgs e) { toolStripButtonCopy_Click(null, null); } private void shearToolStripButton_Click(object sender, EventArgs e) { new frmEditPassword().ShowDialog(); } private void pasteToolStripButton_Click(object sender, EventArgs e) { new frmLocSetting().ShowDialog(); } private void 注销登陆ToolStripMenuItem_Click(object sender, EventArgs e) { loginToolStripButton_Click(null, null); } private void 文本ToolStripMenuItem_Click(object sender, EventArgs e) { Process.Start("notepad.exe"); } private void 画图ToolStripMenuItem_Click(object sender, EventArgs e) { Process.Start("mspaint.exe"); } private void 我的电脑ToolStripMenuItem_Click(object sender, EventArgs e) { Process.Start("::{20D04FE0-3AEA-1069-A2D8-08002B30309D}"); } private void 计算器ToolStripMenuItem_Click(object sender, EventArgs e) { Process.Start("calc.exe"); } private void loginToolStripButton_Click(object sender, EventArgs e) { if (MessageBox.Show("确认注销系统重新登录?", "提示信息", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes) { this.Hide(); AppConfig._FrmLogin.Show(); } } private void 修改密码ToolStripMenuItem_Click(object sender, EventArgs e) { shearToolStripButton_Click(null, null); } private void 修改用户信息ToolStripMenuItem_Click(object sender, EventArgs e) { editToolStripButtonToolStripButton_Click(null, null); } private void editToolStripButtonToolStripButton_Click(object sender, EventArgs e) { new frmEditUser().ShowDialog(); } private void 系统设置ToolStripMenuItem_Click(object sender, EventArgs e) { pasteToolStripButton_Click(null, null); } private void kryptonNavigatorMain_SizeChanged(object sender, EventArgs e) { toolStripStatusLabelMessage.Text = "正在调整窗体布局,请等待..."; toolStripStatusLabelMessage.Visible = true; toolStripStatusLabelMessage.ForeColor = Color.Red; foreach (var item in navigatorTab.Pages) { (item.Controls[0] as Form).WindowState = FormWindowState.Normal; (item.Controls[0] as Form).Size = new Size(navigatorTab.Width, item.Height); } toolStripStatusLabelMessage.Visible = false; } private void MainForm_Load(object sender, EventArgs e) { } } }