⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 formmain.cs

📁 GPRS数据采集驱动源码
💻 CS
📖 第 1 页 / 共 2 页
字号:
		//修改口令
		private void menuItem_ChangePwd_Click(object sender, System.EventArgs e)
		{
			string ret=Class_Comm.ChangePwd();
			if (ret!=null) //如果修改成功口令,则更新本地口令
				Class_Comm.PassWD=ret;


		}

		/// <summary>
		/// 显示授权菜单
		/// </summary>
		/// <param name="menu">菜单对象</param>
		/// 对于管理员显示所有菜单
		private void ShowAllRightMenu(Menu menu)
		{
			//根据菜单别名查询菜单的模块号,如果没找到就不显示权限菜单
			this.TopModuleNo=Class_Comm.GetServiceSys().GetModuleNOByAlias(TopModuleAlias);
			if (this.TopModuleNo=="")
				return;

			DataSet ds=null;
			ds=Class_Comm.GetServiceSys().GetPrgModuleDataSet(this.TopModuleNo);
			
			//将取得的授权菜单集合赋给本地变量
			this.menuDS=ds;
			
			AddToMenu(ds,this.TopModuleNo,menu.MenuItems);
			
		}
		//显示授权的菜单
		private void ShowSubRightMenu(Menu menu)
		{
			//根据菜单别名查询菜单的模块号,如果没找到就不显示权限菜单
			this.TopModuleNo=Class_Comm.GetServiceSys().GetModuleNOByAlias(TopModuleAlias);
			if (this.TopModuleNo=="")
				return;

			DataSet ds=null;
			ds=Class_Comm.GetServiceSys().GetPrgModuleByEmpSeq(Class_Comm.EmployeeSeq,this.TopModuleNo);

			//将取得的授权菜单集合赋给本地变量
			this.menuDS=ds;
			
			AddToMenu(ds,this.TopModuleNo,menu.MenuItems);
		}
		private void AddToMenu(DataSet ds,string parentid,Menu.MenuItemCollection mnuitems)
		{
			DataView dv=new DataView();
			dv.Table=ds.Tables["t_menu"];			
			dv.RowFilter="fd_parentno='"+parentid+"'";
			string tmpNo = "";
			foreach(DataRowView drv in dv)
			{
				MenuItem item=new MenuItem();
				item.Text = drv["fd_name"].ToString();
				tmpNo = drv["fd_moduleNo"].ToString();
				string url;
				url=drv["fd_url"].ToString();
				if ( !(url=="" || url==null )) //有窗口
				{
					item.Click += new System.EventHandler(this.MenuItem_Operation);
				}
				DataRow[] dr=ds.Tables["t_menu"].Select("substring(fd_moduleno,1,"+tmpNo.Length+")='"+tmpNo+"' and fd_isLeave = '1'");
				if (dr.Length!=0)
				{
					 mnuitems.Add(item);
					 AddToMenu(ds,drv["fd_moduleno"].ToString(),item.MenuItems);
				 }
			}			
		}

		/// <summary>
		/// 生成菜单的点击操作
		/// </summary>
		/// <param name="sender"></param>
		/// <param name="e"></param>
		private void MenuItem_Operation(object sender, System.EventArgs e)
		{
			MenuItem item=(MenuItem)sender;
			string title=item.Text.Trim();

			DataView dv=new DataView();
			dv.Table=this.menuDS.Tables["t_menu"];			
			dv.RowFilter="fd_name='"+title+"'";
			if (dv.Count<=0)
			{
				Class_Comm.MsgBox("系统尚未对该菜单项设置窗口,请和系统管理员联系!");
				return;
			}
            DataRowView drv=dv[0];
			//根据菜单文本从数据库中取得操作窗口
			//如果当前窗口在本程序集中,frmurl保存的是窗口类名全称,
			//否则保存格式为:程序集名称,窗口类名全称 例如:OtherAssembly.dll,FormSample
			string frmurl=drv["fd_url"].ToString();  
			if (frmurl=="" || frmurl==null)
			{
				Class_Comm.MsgBox("系统尚未对该菜单项设置窗口,请和系统管理员联系!");
				return;
			}
			//该窗口的模块号
			string frmmoduleno=drv["fd_moduleno"].ToString();
			
			//如果该窗口已经打开就把它放到最前面
			foreach(Form objfrm in this.MdiChildren)
			{
				//本程序集内部的窗口
				if (objfrm.GetType().FullName.Trim().Equals(appName+"."+frmurl))
				{
					objfrm.Activate();
					return;
				}
				//其他程序集中的窗口
				if (objfrm.GetType().FullName.Trim().Equals(Class_Comm.RightChr(frmurl,',')))
				{
					objfrm.Activate();
					return;
				}
			}

			Object[] args=new object [1];
			args[0]=frmmoduleno;
			BindingFlags flags = BindingFlags.InvokeMethod|BindingFlags.Instance|
				BindingFlags.Public|BindingFlags.Static;

			try
			{
				Form frm=(Form)assembly.CreateInstance(appName+"."+frmurl,true,flags,null,args,null,null);				
				frm.MdiParent=this;
				frm.Show ();
			}
			catch(Exception errmsg)
			{
				string msg=errmsg.Message;
				LoadOtherAssembly(frmurl,flags,args);
				return;
			}

		}
		//调用其他程序集中的窗口
		private void LoadOtherAssembly(string frmurl,BindingFlags flags,Object[] args)
		{
			try
			{
				string assemblyname,frmname;
				assemblyname=Class_Comm.LeftChr(frmurl,',');
				frmname=Class_Comm.RightChr(frmurl,',');
				if (assemblyname=="" || frmname=="")
				{
					Class_Comm.ErrMsgBox("程序模块表配置不正确,请和系统管理员联系!");
					return;
				}
				Assembly ass=Assembly.LoadFrom(assemblyname);
				Form frm=(Form)ass.CreateInstance(frmname,true,flags,null,args,null,null);				
				frm.MdiParent=this;
				frm.Show ();
			}
			catch(Exception errmsg)
			{
				Class_Comm.ErrMsgBox(errmsg.Message );
			}
		}
		/// <summary>
		/// 显示通用菜单
		/// </summary>
		private void ShowCommMenu()
		{
			MenuItem item=new MenuItem();
			item.Text="&H帮助主题";
			this.mainMenu.MenuItems.Add(item);

			MenuItem itemHelp=new MenuItem();
			itemHelp.Text="帮助";
			itemHelp.Click+=new EventHandler(this.menuItem_Hlp_Click);
			item.MenuItems.Add(itemHelp);
			
	
			MenuItem itemAbout=new MenuItem();
			itemAbout.Text="关于...";
			itemAbout.Click+=new EventHandler(this.menuItem_About_Click);
			item.MenuItems.Add(itemAbout);

			MenuItem itemLine=new MenuItem();
			itemLine.Text="-";
			item.MenuItems.Add(itemLine);

			MenuItem itemChgPwd=new MenuItem();
			itemChgPwd.Text="修改口令...";
			itemChgPwd.Click+=new EventHandler(this.menuItem_ChangePwd_Click);
			item.MenuItems.Add(itemChgPwd);

			MenuItem itemSysLog=new MenuItem();
			itemSysLog.Text="Windows事件查看器";
			itemSysLog.Click+=new EventHandler(this.menuItem_SysLog_Click);
			item.MenuItems.Add(itemSysLog);
			////////////////////////////////////////////////
			MenuItem itemWin=new MenuItem();
			itemWin.Text="窗口";			
			itemWin.MdiList=true;
			this.mainMenu.MenuItems.Add(itemWin);

			MenuItem itemIcon=new MenuItem();
			itemIcon.Text="图标";
			itemIcon.Click+=new EventHandler(this.ArrangeWindow);
			itemWin.MenuItems.Add(itemIcon);


			MenuItem itemCascade=new MenuItem();
			itemCascade.Text="级联";
			itemCascade.Click+=new EventHandler(this.ArrangeWindow);
			itemWin.MenuItems.Add(itemCascade);

			MenuItem itemTileH=new MenuItem();
			itemTileH.Text="水平";
			itemTileH.Click+=new EventHandler(this.ArrangeWindow);
			itemWin.MenuItems.Add(itemTileH);

			MenuItem itemTileV=new MenuItem();
			itemTileV.Text="垂直";
			itemTileV.Click+=new EventHandler(this.ArrangeWindow);
			itemWin.MenuItems.Add(itemTileV);

			MenuItem itemLine1=new MenuItem();
			itemLine1.Text="-";
			itemWin.MenuItems.Add(itemLine1);

			MenuItem itemCloseThis=new MenuItem();
			itemCloseThis.Text="关闭";
			itemCloseThis.Click+=new EventHandler(this.CloseMDIWin);
			itemWin.MenuItems.Add(itemCloseThis);

			MenuItem itemCloseAll=new MenuItem();
			itemCloseAll.Text="全部关闭";
			itemCloseAll.Click+=new EventHandler(this.CloseMDIWin);
			itemWin.MenuItems.Add(itemCloseAll);


			//////////////////////////////////////////////////////////////


			MenuItem itemExit=new MenuItem();
			itemExit.Text="&X退出";
			this.mainMenu.MenuItems.Add(itemExit);
			itemExit.Click+=new EventHandler(this.menuItem_Exit_Click);


		}

		/// <summary>
		/// Windows事件查看器
		/// </summary>
		/// <param name="sender"></param>
		/// <param name="e"></param>
		private void menuItem_SysLog_Click(object sender, System.EventArgs e)
		{
			System.Diagnostics.ProcessStartInfo  Info  =  new  System.Diagnostics.ProcessStartInfo();
			Info.FileName="eventvwr.msc";
			Process p=new Process();
			p.StartInfo=Info;
			p.Start();
		}
		/// <summary>
		/// 关闭当前或所有子窗口
		/// </summary>
		/// <param name="sender"></param>
		/// <param name="e"></param>
		private void CloseMDIWin(object sender, System.EventArgs e)
		{
			MenuItem item=(MenuItem)sender;
			string txt=item.Text.Trim();

			switch(txt)
			{
				case "关闭":
					Form afrm=this.ActiveMdiChild;
					if (afrm!=null)
						afrm.Close();
					break;
				case "全部关闭":
					Form[] frm=this.MdiChildren;
					for(int i=0;i<frm.Length;++i)
						if (frm[i]!=null)
							frm[i].Close();
					break;
			}
		}

		/// <summary>
		/// 排列窗口
		/// </summary>
		/// <param name="sender"></param>
		/// <param name="e"></param>
		private void ArrangeWindow(object sender, System.EventArgs e)
		{
			MenuItem item=(MenuItem)sender;
			string txt=item.Text.Trim();

			switch(txt)
			{
				case "图标":
					Class_Comm.ArrangeWindow(this,"Icon");
					break;
				case "级联":
					Class_Comm.ArrangeWindow(this,"Cascade");
					break;
				case "水平":
					Class_Comm.ArrangeWindow(this,"TileHorizontal");
					break;
				case "垂直":
					Class_Comm.ArrangeWindow(this,"TileVertical");
					break;
			}
			
		}

		/// <summary>
		/// 显示主菜单,包括授权菜单和通用菜单
		/// </summary>
		private void ShowMenu()
		{
			//如果是管理员则全部显示
			if (Class_Comm.IsManager=="1") 
				this.ShowAllRightMenu(this.mainMenu);
			else
				this.ShowSubRightMenu(this.mainMenu);

			this.ShowCommMenu();
		}

		//打开窗口的时候
		private void FormMain_Load(object sender, System.EventArgs e)
		{
			this.ShowMenu();	
	
            this.Text=User+Title;
			
			this.stbpuserinfo.Text="用户:["+Class_Comm.UserID+"]"+Class_Comm.EmployeeName+" 登录时间:"+Class_Comm.GetNow();
			this.stbpIP.Text="IP:"+Class_Comm.GetIP();
			
			SplashWin.Close(); //关闭splash窗体
		}

		//显示窗口
		private void menuItem_ShowWin_Click(object sender, System.EventArgs e)
		{
		
			this.Show();
			notifyIcon_Main.Visible = false;
			this.BringToFront();


		}
		
		//隐藏窗口
		private void menuItem_HideWin_Click(object sender, System.EventArgs e)
		{
			this.HideWin();
			
		}
		private void HideWin()
		{
			notifyIcon_Main.Visible = true;
			this.Hide();
		}

		private void toolBar_Main_ButtonClick(object sender, System.Windows.Forms.ToolBarButtonClickEventArgs e)
		{

			//根据工具条的tooltip文本判断点击哪个button
			switch(e.Button.ToolTipText)
			{
				case "关于":
					this.menuItem_About_Click(null,null);
					break;
				case "帮助":
					this.menuItem_Hlp_Click(null,null);
					break;
				case "退出系统":
					this.menuItem_Exit_Click(null,null);
					break;
			}
		}


		private void menuItem2_Click(object sender, System.EventArgs e)
		{
			FormTest fm = new FormTest();
			fm.MdiParent = this;
			fm.Show();

		}

		//定时器,保证Session不过期,缺省为15分种一次,所以IIS中会话过期要大于15分钟
		private void tmRefresh_Tick(object sender, System.EventArgs e)
		{
			try
			{
				Class_Comm.GetServiceSys().RefreshSession();
				//GC.Collect();
			}
			catch(Exception exp)
			{
				string msg=exp.Message;
				this.stbpmsg.Text=Class_Comm.GetNow()+"会话过期,请和系统管理员联系!"+exp.Message;
				HandleRefreshError(this.stbpmsg.Text);
			}
		}

		private void HandleRefreshError(string msg)
		{
			this.tmRefresh.Enabled=false;
			//写计算机事件日志
			Class_SysLog.WriteSysLog(ModuleTag,ModuleTag,msg);
			
			string errmsg="";
			//重新登录
			//重新生成cookie
			Class_Comm.MyCookie=null;
			Class_Comm.MyCookie=new System.Net.CookieContainer();
			try
			{
				DataSet ret=Class_Comm.GetServiceSys().Login(Class_Comm.UserID,Class_Comm.PassWD,ModuleTag );
				if (ret==null) //登录不成功
				{
					Class_SysLog.WriteSysLog(ModuleTag,ModuleTag,Class_Comm.UserID+"因为用户名或密码错误无法重新登录系统,确定是否系统在运行期间修改了密码。");
					errmsg=Class_Comm.UserID+"于"+Class_Comm.GetNow()+"因为用户名或密码错误重新登录系统不成功";
				}
				else
				{
					Class_SysLog.WriteSysLog(ModuleTag,ModuleTag,Class_Comm.UserID+"重新登录系统成功。");
					errmsg=Class_Comm.UserID+"于"+Class_Comm.GetNow()+"重新登录系统成功";
				}
			}
			catch(Exception exp)
			{
				Class_SysLog.WriteSysLog(ModuleTag,ModuleTag,Class_Comm.UserID+"无法重新登录系统,错误信息:"+exp.Message);
				errmsg=Class_Comm.UserID+"于"+Class_Comm.GetNow()+"重新登录系统不成功。错误信息:"+exp.Message;
			}
			this.stbpmsg.Text=errmsg;
			this.tmRefresh.Enabled=true;
		}


		//显示关闭工具条
		private void menuItem_ToolBar_Click(object sender, System.EventArgs e)
		{
			this.toolBar_Main.Visible=!this.toolBar_Main.Visible;
			this.menuItem_ToolBar.Checked=this.toolBar_Main.Visible;
		}

		//显示关闭状态条
		private void menuItem_StatusBar_Click(object sender, System.EventArgs e)
		{
			this.stbMain.Visible=!this.stbMain.Visible;
			this.menuItem_StatusBar.Checked=this.stbMain.Visible;		
		}
		/// <summary>
		/// 检测当前进程是否已经启动一次
		/// </summary>
		/// <returns>null 表示没启动 否则启动了</returns>
		public static Process RunningInstance() 
		{ 
			Process current = Process.GetCurrentProcess(); 
			Process[] processes = Process.GetProcessesByName (current.ProcessName); 
			//Loop through the running processes in with the same name 
			foreach (Process process in processes) 
			{ 
				//Ignore the current process 
				if (process.Id != current.Id) 
				{ 
					//Make sure that the process is running from the exe file. 
					if (Assembly.GetExecutingAssembly().Location.Replace("/", "\\") == current.MainModule.FileName) 
					{ 
						//Return the other process instance. 
						return process; 
					} 
				} 
			} 
			//No other instance was found, return null. 
			return null; 
		} 

	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -