主窗口效果
主窗口代码
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using Xwy.WindowsFormsApp.Common; using Xwy.WindowsFormsApp.DAL; using Xwy.WindowsFormsApp.Models; namespace Xwy.WindowsFormsApp { public partial class FrmMain : Form { public FrmMain() { InitializeComponent(); } UserDAL userDAL=new UserDAL(); MenuDAL menuDAL = new MenuDAL(); int userId = 0; private void FrmMain_Load(object sender, EventArgs e) { //获取传递过来的UserId if (this.Tag != null) { userId = this.Tag.GetInt(); } if (userId > 0) { //获取用户的角色信息 List<RoleInfoModel> roles = userDAL.GetUserRoles(userId); bool bl = false; List<MenuInfoModel> menuList = new List<MenuInfoModel>(); foreach (RoleInfoModel role in roles) { if (role.IsAdmin==1) { //加载所有菜单列表 bl = true; menuList = menuDAL.GetUserMenuList(role.RoleId.ToString()); break; } } if (!bl) { string roleIds = string.Join(",", roles.Select(r => r.RoleId)); //权限菜单 menuList = menuDAL.GetUserMenuList(roleIds); } //加载菜单树 TreeNode rootNode = new TreeNode(); rootNode.Name = "0"; rootNode.Text = "权限管理系统"; tvMenus.Nodes.Add(rootNode); CreateNode(menuList, rootNode, 0); tvMenus.ExpandAll(); } } private void CreateNode(List<MenuInfoModel> menuList,TreeNode pNode,int parentId) { if (menuList.Count > 0) { //获取所有的子菜单 var childList = menuList.Where(m => m.ParentId == parentId).ToList(); foreach (MenuInfoModel menu in childList) { TreeNode tn = new TreeNode(); tn.Name = menu.MenuId.ToString(); tn.Text = menu.MenuName; if (!string.IsNullOrEmpty(menu.FrmName)) { tn.Tag = menu.FrmName; } if (pNode != null) { pNode.Nodes.Add(tn);//节点添加 } else { tvMenus.Nodes.Add(tn); } CreateNode(menuList, tn, menu.MenuId); } } } private void tvMenus_AfterSelect(object sender, TreeViewEventArgs e) { TreeNode selNode = tvMenus.SelectedNode; if (selNode.Tag != null) { string url = selNode.Tag.ToString(); Form f = null; bool bl = false; //判断当前我要实例化的窗口是否已经打开 foreach (Form frm in Application.OpenForms) { if (frm.Name == url) { bl = true; f = frm; f.Show(); f.Activate(); break; } } if (!bl) { //获取程序集的名称 string assName = this.GetType().Assembly.GetName().Name; //f = (Form)Activator.CreateInstance(assName,assName+"."+url).Unwrap();或者 f = (Form)Activator.CreateInstance(Type.GetType(assName + "." + url)); f.MdiParent = this; f.Name = url; f.Show(); } } } private void FrmMain_FormClosing(object sender, FormClosingEventArgs e) { //让用户确认到底要不要退出,是--退出 否--不退出 if (MsgBoxHelper.MsgBoxConfirm("退出系统", "您确定要退出系统吗") == DialogResult.Yes) { //Application.Exit();//有问题,弹出两次 Application.ExitThread(); } else { e.Cancel = true;//如果没有这一句,主页面仍然关闭,但没有退出应用程序 } } } }