在网上查了很多,发现没有讲述关于--C#winform菜单权限分配,与菜单同步的treeView树状菜单权限控制使用--的资料
自己研究了一个使用方法。下面来看看。
我有两个窗体:LOGINFRM,MAINFRM.
首先,说明一点,我的菜单项是通过程序控制动态自动添加到树形控件菜单项的。
第一步,在主窗体MAINFRM中,添加公共变量
public string username="";//用户名 public string useLOA = "";//权限 public int sa; //权限 public int userLOA { get { return sa; } set { sa = value; } }
第二步,在登录窗体中,
UserName = txtUserName.Text.Trim();//获取用户名 PassWrd = txtPasWrd.Text.Trim();//获取密码 LOA1 = comboBox1.Text;//获取combox1的选项:用户身份获取 。。。。 Form_Main HomePage = new Form_Main(); if (LOA1 == "管理员")//传递权限 { HomePage.userLOA = 1; } else//普通用户 { HomePage.userLOA = 2; } HomePage.username = UserName; //传递用户名 ,用于状态栏显示 HomePage.useLOA = LOA1;//传递权限,用于状态栏显示 this.Hide();//隐藏登录窗口 //HomePage.StartPosition = FormStartPosition.CenterScreen;//屏幕中央显示窗体 HomePage.Show();//显示主窗口
第三部 在加载主窗体事件中添加
private void Form_Main_Load(object sender, EventArgs e)//窗体加载事件 { GetMenu(treeView1,menuStrip1);//菜单项添加到树形控件 //MessageBox.Show(userLOA.ToString());//TEST-OK if (userLOA == 2)//权限限制 { Excel导入.Enabled = false; Excel导出.Enabled = false; 添加用户.Enabled = false; 修改密码.Enabled = false; 删除用户.Enabled = false; } toolStripStatusLabel2.Text = "当前用户:"+username+", 权限:"+useLOA+"";//状态栏显示用户名和权限 }
第四步,树形菜单权限控制
1 //TreeView树状菜单和ToolMenuStrip菜单调用的是相同的窗体,下面通过判断 2 3 //ToolMenuStrip菜单项的状态来决定是否打开对应窗体,经过实践证明,下面的方法是有效的。做到了 4 //TreeView树状菜单权限控制 5 6 7 8 //水文信息添加 9 if (FrmName == "Excel导入") 10 { 11 //根据菜单状态控制树型菜单项的状态 12 13 if (Excel导入.Enabled == false) 14 { 15 MessageBox.Show("当前用户无权使用该功能!"); 16 17 } 18 else 19 { 20 添加frm tianjiafrm = new 添加frm(); 21 tianjiafrm.StartPosition = FormStartPosition.CenterParent; 22 tianjiafrm.ShowDialog(); 23 tianjiafrm.Dispose();//模态对话框显示 24 } 25 26 27 28 } 29 if (FrmName == "Excel导出") 30 { 31 if (Excel导出.Enabled==false) 32 { 33 MessageBox.Show("当前用户无权使用该功能!"); 34 } 35 else 36 { 37 导出frm daochufrm = new 导出frm(); 38 daochufrm.StartPosition = FormStartPosition.CenterParent; 39 daochufrm.ShowDialog(); 40 daochufrm.Dispose();//模态对话框显示 41 } 42 43 44 } 45 46 //系统管理 47 if (FrmName == "添加用户") 48 { 49 if (添加用户.Enabled==false) 50 { 51 MessageBox.Show("当前用户无权使用该功能!"); 52 } 53 else 54 { 55 添加用户frm tianjiafrm = new 添加用户frm(); 56 tianjiafrm.StartPosition = FormStartPosition.CenterParent; 57 tianjiafrm.ShowDialog(); 58 tianjiafrm.Dispose(); 59 } 60 61 } 62 if (FrmName == "修改密码") 63 { 64 if (修改密码.Enabled==false) 65 { 66 MessageBox.Show("当前用户无权使用该功能!"); 67 } 68 else 69 { 70 修改用户信息frm xiugaifrm = new 修改用户信息frm(); 71 xiugaifrm.StartPosition = FormStartPosition.CenterParent; 72 xiugaifrm.ShowDialog(); 73 xiugaifrm.Dispose(); 74 } 75 76 77 } 78 if (FrmName == "删除用户") 79 { 80 if (删除用户.Enabled==false) 81 { 82 MessageBox.Show("当前用户无权使用该功能!"); 83 } 84 else 85 { 86 删除用户frm sanchufrm = new 删除用户frm(); 87 sanchufrm.StartPosition = FormStartPosition.CenterParent; 88 sanchufrm.ShowDialog(); 89 sanchufrm.Dispose(); 90 91 } 92 93 } 94 if (FrmName=="使用说明") 95 { 96 97 使用说明frm usertip = new 使用说明frm(); 98 usertip.StartPosition = FormStartPosition.CenterParent; 99 usertip.ShowDialog(); 100 usertip.Dispose(); 101 } 102 if (FrmName=="关于") 103 { 104 AboutBox1 aboutfrm = new AboutBox1(); 105 aboutfrm.StartPosition = FormStartPosition.CenterParent; 106 aboutfrm.ShowDialog(); 107 aboutfrm.Dispose(); 108 109 }