权限管理几乎是任何系统都有的,有的权限较简单,而有的权限比较复杂,下面的这种方法是控制模块权限的一种常用方法,
用户管理:右边的功能列表是所有子菜单的Text属性,使用的是(CheckedListBox)。
基本方法是这样的:权限表中存储权限(子菜单的Text属性的值),用户表中存储登录系统的用户,
权限表存储用户对应的所有权限(用0和1来表示是否有访问的权限)。
设置权限之后登录的效果图如下所示,没有打勾的选项都变成了灰色不可用状态。

 List<ToolStripMenuItem> list = new List<ToolStripMenuItem>();
List<ToolStripMenuItem> list = new List<ToolStripMenuItem>();

 //取出所有子菜单,添加到集合
            //取出所有子菜单,添加到集合
 for (int i = 0; i < this.menu.Items.Count; i++)
            for (int i = 0; i < this.menu.Items.Count; i++)
 {
            {
 ToolStripDropDownItem menuItems = (ToolStripDropDownItem)menu.Items[i];
                ToolStripDropDownItem menuItems = (ToolStripDropDownItem)menu.Items[i];
 if (menuItems.HasDropDownItems)
                if (menuItems.HasDropDownItems)
 {
                {
 for (int k = 0; k < menuItems.DropDownItems.Count; k++)
                    for (int k = 0; k < menuItems.DropDownItems.Count; k++)
 {
                    {
 list.Add((ToolStripMenuItem)menuItems.DropDownItems[k]);
                        list.Add((ToolStripMenuItem)menuItems.DropDownItems[k]);
 }
                    }
 }
                }
 }
            }
 }
        }
取出用户对应的权限,和刚才取出的菜单对比,没有权限的就禁用掉。
下面是关于CheckedListBox的部分代码:
 private void cklb_Function_ItemCheck(object sender, ItemCheckEventArgs e)
   private void cklb_Function_ItemCheck(object sender, ItemCheckEventArgs e)
 {
        {
 try
            try
 {
            {

 string uid = dgv_Users.SelectedRows[0].Cells["操作员"].Value.ToString();
                string uid = dgv_Users.SelectedRows[0].Cells["操作员"].Value.ToString();
 string rid = cklb_Function.SelectedValue.ToString();
                string rid = cklb_Function.SelectedValue.ToString();
 if (Convert.ToBoolean(e.CurrentValue))
                if (Convert.ToBoolean(e.CurrentValue))
 {
                {
 ur.UpdateUserRight(uid, rid, false);
                    ur.UpdateUserRight(uid, rid, false);
 }
                }
 else
                else
 {
                {
 ur.UpdateUserRight(uid, rid, true);
                    ur.UpdateUserRight(uid, rid, true);
 }
                }

 }
            }
 catch (Exception ex)
            catch (Exception ex)
 {
            {
 MsgBox.Error(ex.Message);
                MsgBox.Error(ex.Message);
 }
            }
 }
        }
 
全选和全删
 private void btn_AllSelect_Click(object sender, EventArgs e)
 private void btn_AllSelect_Click(object sender, EventArgs e)
 {
        {
 for (int i = 0; i < cklb_Function.Items.Count; i++)
            for (int i = 0; i < cklb_Function.Items.Count; i++)
 {
            {
 cklb_Function.SetItemChecked(i, true);
                cklb_Function.SetItemChecked(i, true);
 }
            }
 }
        }

 private void btn_AllDel_Click(object sender, EventArgs e)
        private void btn_AllDel_Click(object sender, EventArgs e)
 {
        {
 for (int i = 0; i < cklb_Function.Items.Count; i++)
            for (int i = 0; i < cklb_Function.Items.Count; i++)
 {
            {
 cklb_Function.SetItemChecked(i, false);
                cklb_Function.SetItemChecked(i, false);
 }
            }
用户管理:右边的功能列表是所有子菜单的Text属性,使用的是(CheckedListBox)。
基本方法是这样的:权限表中存储权限(子菜单的Text属性的值),用户表中存储登录系统的用户,
权限表存储用户对应的所有权限(用0和1来表示是否有访问的权限)。
设置权限之后登录的效果图如下所示,没有打勾的选项都变成了灰色不可用状态。
   
  主窗体一加载的时候,取出所有子菜单对象:
 List<ToolStripMenuItem> list = new List<ToolStripMenuItem>();
List<ToolStripMenuItem> list = new List<ToolStripMenuItem>();
 //取出所有子菜单,添加到集合
            //取出所有子菜单,添加到集合 for (int i = 0; i < this.menu.Items.Count; i++)
            for (int i = 0; i < this.menu.Items.Count; i++) {
            { ToolStripDropDownItem menuItems = (ToolStripDropDownItem)menu.Items[i];
                ToolStripDropDownItem menuItems = (ToolStripDropDownItem)menu.Items[i]; if (menuItems.HasDropDownItems)
                if (menuItems.HasDropDownItems) {
                { for (int k = 0; k < menuItems.DropDownItems.Count; k++)
                    for (int k = 0; k < menuItems.DropDownItems.Count; k++) {
                    { list.Add((ToolStripMenuItem)menuItems.DropDownItems[k]);
                        list.Add((ToolStripMenuItem)menuItems.DropDownItems[k]); }
                    } }
                } }
            } }
        }取出用户对应的权限,和刚才取出的菜单对比,没有权限的就禁用掉。
下面是关于CheckedListBox的部分代码:
 private void cklb_Function_ItemCheck(object sender, ItemCheckEventArgs e)
   private void cklb_Function_ItemCheck(object sender, ItemCheckEventArgs e) {
        { try
            try {
            {
 string uid = dgv_Users.SelectedRows[0].Cells["操作员"].Value.ToString();
                string uid = dgv_Users.SelectedRows[0].Cells["操作员"].Value.ToString(); string rid = cklb_Function.SelectedValue.ToString();
                string rid = cklb_Function.SelectedValue.ToString(); if (Convert.ToBoolean(e.CurrentValue))
                if (Convert.ToBoolean(e.CurrentValue)) {
                { ur.UpdateUserRight(uid, rid, false);
                    ur.UpdateUserRight(uid, rid, false); }
                } else
                else {
                { ur.UpdateUserRight(uid, rid, true);
                    ur.UpdateUserRight(uid, rid, true); }
                }
 }
            } catch (Exception ex)
            catch (Exception ex) {
            { MsgBox.Error(ex.Message);
                MsgBox.Error(ex.Message); }
            } }
        }
全选和全删
 private void btn_AllSelect_Click(object sender, EventArgs e)
 private void btn_AllSelect_Click(object sender, EventArgs e) {
        { for (int i = 0; i < cklb_Function.Items.Count; i++)
            for (int i = 0; i < cklb_Function.Items.Count; i++) {
            { cklb_Function.SetItemChecked(i, true);
                cklb_Function.SetItemChecked(i, true); }
            } }
        }
 private void btn_AllDel_Click(object sender, EventArgs e)
        private void btn_AllDel_Click(object sender, EventArgs e) {
        { for (int i = 0; i < cklb_Function.Items.Count; i++)
            for (int i = 0; i < cklb_Function.Items.Count; i++) {
            { cklb_Function.SetItemChecked(i, false);
                cklb_Function.SetItemChecked(i, false); }
            } 
                    
                     
                    
                 
                    
                 
 
         
            
 
                 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号