using System; using System.Drawing; using System.Windows.Forms; using ProjectBase.Controls; using DevExpress.XtraTabbedMdi; using ProjectBase.Data.Logs; using SIMDP.Util; using System.Net; using System.Management; using SIMDP.BLL; using ProjectBase.Data.Redis; using StackExchange.Redis; using SIMDP.Model; using ProjectBase.Data.BaseDAL; using SIMDP.Project; namespace SIMDP { public partial class MainForm : DevExpress.XtraBars.Ribbon.RibbonForm { //用来第一次创建动态菜单 private SIMDP.RibbonPageHelper.RibbonPageHelper ribbonHelper = null; private delegate void messageDelegate(); private NotifyWindow notifyWindow = null; Scheduler task = new Scheduler(); private RedisHelper redis = new RedisHelper(0); public MainForm() { InitializeComponent(); } private void MainForm_Load(object sender, EventArgs e) { //ToDo:最小化托盘显示 this.notifyIcon1.Visible = true; this.ribbonControl.Minimized = false;//菜单展开 task.Schedule(); GetIpMac(); this.label_Version.Caption = "当前版本号:" + System.Configuration.ConfigurationManager.AppSettings["Version"]; string defaultUser = System.Configuration.ConfigurationManager.AppSettings["DefaultUser"]; if (defaultUser != null && defaultUser != "") { SysEnvironment.CurrentLoginID = defaultUser; ///默认登录用户 //开启规则窗口 //FormLogIn form = new FormLogIn(); //form.MdiParent = this; //form.Show(); //开启XX窗口 //FormMonitorNode form = new FormMonitorNode(); //form.MdiParent = this; //form.Show(); LogIn(); SysSubscribeEvent(); barButtonItemReset_ItemClick(this, null); } else { LogIn(); SysSubscribeEvent(); barButtonItemReset_ItemClick(this, null); } //FormSwipeToLogin form = new FormSwipeToLogin(); //form.Show(); } private void GetIpMac() { //获取本机的IP地址和MAC地址 IPAddress[] ipadrlist = Dns.GetHostAddresses(Dns.GetHostName()); string ip = null; foreach (IPAddress item in ipadrlist) { if (item.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork) { ip = SysEnvironment.Ip = item.ToString(); } } string mac = null; ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration"); ManagementObjectCollection moc = mc.GetInstances(); foreach (ManagementObject mo in moc) { if ((bool)mo["IPEnabled"] == true) { mac = SysEnvironment.Mac = mo["MacAddress"].ToString(); break; } } } /// /// 动态创建界面菜单对象 /// private void InitRibbonPage() { try { //BlAuthoryUser blUser = new BlAuthoryUser(); //BlRoleRight blRoleRight = new BlRoleRight(); //MoAuthoryUser user = BLLFactory.Instance.FindByID(SysEnvironment.CurrentLoginID); this.barStaticItem_User.Caption = string.Format("{0},欢迎登录", SysEnvironment.CurrentLoginName); //动态创建界面菜单对象(防止重复构建) if (ribbonHelper == null) { ribbonHelper = new SIMDP.RibbonPageHelper.RibbonPageHelper(this, ref this.ribbonControl); ribbonHelper.AddPages(); } } catch (Exception ex) { DevExpress.XtraEditors.XtraMessageBox.Show("获取该用户权限失败。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); LogHelper.log.Error(string.Format("初始化界面菜单出现错误:{0}", ex.ToString())); } } private void xtraTabbedMdiManager1_MouseDown(object sender, MouseEventArgs e) { if (e.Button != MouseButtons.Right) return; DevExpress.XtraTab.ViewInfo.BaseTabHitInfo hi = xtraTabbedMdiManager1.CalcHitInfo(new Point(e.X, e.Y)); if (hi.HitTest == DevExpress.XtraTab.ViewInfo.XtraTabHitTest.PageHeader) { popupMenu1.ShowPopup(Cursor.Position); } } private void pop_CloseCurrent_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { XtraMdiTabPage page = xtraTabbedMdiManager1.SelectedPage; if (page != null && page.MdiChild != null) { page.MdiChild.Close(); } } private void pop_CloseAll_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { foreach (Form form in this.MdiChildren) { form.Close(); if (form != null && !form.IsDisposed) { form.Dispose(); } } } private void pop_CloseOther_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { XtraMdiTabPage selectedPage = xtraTabbedMdiManager1.SelectedPage; Type currentType = selectedPage.MdiChild.GetType(); for (int i = xtraTabbedMdiManager1.Pages.Count - 1; i >= 0; i--) { XtraMdiTabPage page = xtraTabbedMdiManager1.Pages[i]; if (page != null && page.MdiChild != null) { Form form = page.MdiChild; if (form.GetType() != currentType) { form.Close(); if (form != null && !form.IsDisposed) { form.Dispose(); } } } } } /// /// 登录验证 /// private void LogIn() { Type type = Type.GetType("SIMDP.FormLogIn"); FormLogIn logIn = ChildWinManagement.LoadMdiForm(this, type) as FormLogIn; this.xtraTabbedMdiManager1.Pages[0].ShowCloseButton = DevExpress.Utils.DefaultBoolean.False; logIn.myRefresh += new FormLogIn.refresh(InitRibbonPage); } /// /// 退出系统 /// /// /// private void barBtnItem_Quit_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { this.Close(); } /// /// 重新登录 /// /// /// private void barBtnItem_ReLogIn_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { SysEnvironment.CurrentLoginID = null; SysEnvironment.passWordMD5 = null; this.barStaticItem_User.Caption = "欢迎登录"; pop_CloseAll_ItemClick(sender, e); this.ribbonControl.Pages.Clear(); ribbonHelper = null; LogIn(); } /// /// 修改密码 /// /// /// private void barBtnItem_EditPassWord_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { FormChangePassWord passWord = new FormChangePassWord(); passWord.ShowDialog(); if (passWord.DialogResult == DialogResult.OK) { barBtnItem_ReLogIn_ItemClick(sender,e); } } /// /// OPC重新连接 /// /// /// private void barButtonItemReset_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { try { PlcHelper.Instance.Connect(); //Thread.Sleep(5000); if (e != null) DevExpress.XtraEditors.XtraMessageBox.Show("OPC连接成功"); } catch (Exception ex) { DevExpress.XtraEditors.XtraMessageBox.Show("OPC连接失败\n" + ex.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); LogHelper.log.Error(string.Format("OPC线程重启失败:{0}", ex.ToString())); } } /// /// OPC 断开 /// /// /// private void barButtonItemCancle_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { try { PlcHelper.Instance.Close(); DevExpress.XtraEditors.XtraMessageBox.Show("OPC连接已断开"); } catch (Exception ex) { DevExpress.XtraEditors.XtraMessageBox.Show("OPC断开失败", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); LogHelper.log.Error(string.Format("OPC线程断开失败:{0}", ex.ToString())); } } /// /// 最小化托盘退出 /// /// /// < param name="e"> private void menu_Exit_Click(object sender, EventArgs e) { this.Close(); } /// /// 窗口大小发生变化时发生 /// /// /// < param name="e"> private void MainForm_Resize(object sender, EventArgs e) { //ToDo:窗口最小化到托盘 //if (this.WindowState == FormWindowState.Minimized) //{ // this.Visible = false; // this.notifyIcon1.Visible = true; //} } /// /// 托盘鼠标双击事件 /// /// /// < param name="e"> private void notifyIcon1_MouseDoubleClick(object sender, MouseEventArgs e) { this.Visible = true; this.WindowState = FormWindowState.Maximized; this.Show(); this.Activate(); } private void menu_Hide_Click(object sender, EventArgs e) { this.Hide(); } private void menu_Open_Click(object sender, EventArgs e) { notifyIcon1_MouseDoubleClick(sender, null); } private void MainForm_FormClosing(object sender, FormClosingEventArgs e) { if (DevExpress.XtraEditors.XtraMessageBox.Show("您确定要退出吗?", "新松智能制造数据平台", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes) { //FormUserVerification form = new FormUserVerification(); //form.ShowDialog(); //if (form.DialogResult != DialogResult.OK) //{ // DevExpress.XtraEditors.XtraMessageBox.Show("用户验证失败。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); // e.Cancel = true; //} //e.Cancel = true; task.Stop(); //this.notifyIcon1.Visible = false; //this.Close(); } else { e.Cancel = true; } } /// /// 订阅系统提示消息 /// private void SysSubscribeEvent() { string channel = SysEnvironment.SystemMessage; redis.Subscribe(channel, new Action(InsertSysMessage)); } /// /// 发布时插入数据库 /// /// /// private void InsertSysMessage(RedisChannel channel, RedisValue message) { try { string[] arr = message.ToString().Split('|'); MoSystemNotice mo = new MoSystemNotice(); mo.NoticeTitle = arr[0]; mo.NoticeType = Convert.ToInt32(arr[1]); mo.NoticeContent = arr[2]; mo.NoticeTime = Convert.ToDateTime(arr[3]); mo.NoticeSign = Convert.ToBoolean(arr[4]); BLLFactory.Instance.Insert(mo); if (this.InvokeRequired) { messageDelegate mes = new messageDelegate(ShowSysMessage); this.Invoke(mes, null); } else { ShowSysMessage(); } } catch (Exception ex) { LogHelper.log.Error("显示订阅系统提示信息 出现错误" + ex); } } //显示系统消息提示框 private void ShowSysMessage() { if (notifyWindow == null || notifyWindow.IsDisposed) { notifyWindow = new NotifyWindow("系统提示信息", ""); notifyWindow.SetDimensions(600, 200); notifyWindow.WaitTime = 50; notifyWindow.Notify(); } else { notifyWindow.Activate(); notifyWindow.RefreshWindow(); return; } } } }