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)
{
}
}
}