CS程序中基于菜单和工具栏的权限设计

用户管理:右边的功能列表是所有子菜单的Text属性,使用的是(CheckedListBox)。

CS程序中基于菜单和工具栏的权限设计

设置权限之后登录的效果图如下所示,没有打勾的选项都变成了灰色不可用状态。


CS程序中基于菜单和工具栏的权限设计

基本方法是这样的:权限表中存储权限(子菜单的Text属性的值),用户表中存储登录系统的用户,
权限表存储用户对应的所有权限(用0和1来表示是否有访问的权限)。

主窗体一加载的时候,取出所有子菜单对象:

List<ToolStripMenuItem>list=newList<ToolStripMenuItem>();
CS程序中基于菜单和工具栏的权限设计
CS程序中基于菜单和工具栏的权限设计
//取出所有子菜单,添加到集合
CS程序中基于菜单和工具栏的权限设计
for(inti=0;i<this.menu.Items.Count;i++)
CS程序中基于菜单和工具栏的权限设计CS程序中基于菜单和工具栏的权限设计
CS程序中基于菜单和工具栏的权限设计{
CS程序中基于菜单和工具栏的权限设计ToolStripDropDownItemmenuItems
=(ToolStripDropDownItem)menu.Items[i];
CS程序中基于菜单和工具栏的权限设计
if(menuItems.HasDropDownItems)
CS程序中基于菜单和工具栏的权限设计CS程序中基于菜单和工具栏的权限设计
CS程序中基于菜单和工具栏的权限设计{
CS程序中基于菜单和工具栏的权限设计
for(intk=0;k<menuItems.DropDownItems.Count;k++)
CS程序中基于菜单和工具栏的权限设计CS程序中基于菜单和工具栏的权限设计
CS程序中基于菜单和工具栏的权限设计{
CS程序中基于菜单和工具栏的权限设计list.Add((ToolStripMenuItem)menuItems.DropDownItems[k]);
CS程序中基于菜单和工具栏的权限设计}

CS程序中基于菜单和工具栏的权限设计}

CS程序中基于菜单和工具栏的权限设计}

CS程序中基于菜单和工具栏的权限设计}

取出用户对应的权限,和刚才取出的菜单对比,没有权限的就禁用掉。

//读取相应的权限
CS程序中基于菜单和工具栏的权限设计
DataSetds=UR.LaodUsersRight(Share.UserID);
CS程序中基于菜单和工具栏的权限设计
CS程序中基于菜单和工具栏的权限设计
if(!DataHelper.IsNullDataSet(ds))
CS程序中基于菜单和工具栏的权限设计CS程序中基于菜单和工具栏的权限设计
CS程序中基于菜单和工具栏的权限设计{
CS程序中基于菜单和工具栏的权限设计DataTabledt
=ds.Tables[0];
CS程序中基于菜单和工具栏的权限设计
CS程序中基于菜单和工具栏的权限设计
if(!DataHelper.IsNullDataTable(dt))
CS程序中基于菜单和工具栏的权限设计CS程序中基于菜单和工具栏的权限设计
CS程序中基于菜单和工具栏的权限设计{
CS程序中基于菜单和工具栏的权限设计
for(inti=0;i<dt.Rows.Count;i++)
CS程序中基于菜单和工具栏的权限设计CS程序中基于菜单和工具栏的权限设计
CS程序中基于菜单和工具栏的权限设计{
CS程序中基于菜单和工具栏的权限设计
for(intj=0;j<list.Count;j++)
CS程序中基于菜单和工具栏的权限设计CS程序中基于菜单和工具栏的权限设计
CS程序中基于菜单和工具栏的权限设计{
CS程序中基于菜单和工具栏的权限设计
if(dt.Rows[i]["IsOk"].ToString()=="True")
CS程序中基于菜单和工具栏的权限设计CS程序中基于菜单和工具栏的权限设计
CS程序中基于菜单和工具栏的权限设计{
CS程序中基于菜单和工具栏的权限设计
if(dt.Rows[i]["RightName"].ToString()==list[j].Text)
CS程序中基于菜单和工具栏的权限设计CS程序中基于菜单和工具栏的权限设计
CS程序中基于菜单和工具栏的权限设计{
CS程序中基于菜单和工具栏的权限设计list[j].Enabled
=true;
CS程序中基于菜单和工具栏的权限设计
break;
CS程序中基于菜单和工具栏的权限设计}

CS程序中基于菜单和工具栏的权限设计}

CS程序中基于菜单和工具栏的权限设计
else
CS程序中基于菜单和工具栏的权限设计CS程序中基于菜单和工具栏的权限设计
CS程序中基于菜单和工具栏的权限设计{
CS程序中基于菜单和工具栏的权限设计
if(dt.Rows[i]["RightName"].ToString()==list[j].Text)
CS程序中基于菜单和工具栏的权限设计CS程序中基于菜单和工具栏的权限设计
CS程序中基于菜单和工具栏的权限设计{
CS程序中基于菜单和工具栏的权限设计list[j].Enabled
=false;
CS程序中基于菜单和工具栏的权限设计
break;
CS程序中基于菜单和工具栏的权限设计}

CS程序中基于菜单和工具栏的权限设计}

CS程序中基于菜单和工具栏的权限设计}

CS程序中基于菜单和工具栏的权限设计}

CS程序中基于菜单和工具栏的权限设计
CS程序中基于菜单和工具栏的权限设计
//遍历所有的工具栏
CS程序中基于菜单和工具栏的权限设计
for(intk=0;k<this.toolStrip1.Items.Count;k++)
CS程序中基于菜单和工具栏的权限设计CS程序中基于菜单和工具栏的权限设计
CS程序中基于菜单和工具栏的权限设计{
CS程序中基于菜单和工具栏的权限设计
for(intz=0;z<dt.Rows.Count;z++)
CS程序中基于菜单和工具栏的权限设计CS程序中基于菜单和工具栏的权限设计
CS程序中基于菜单和工具栏的权限设计{
CS程序中基于菜单和工具栏的权限设计
if(dt.Rows[z]["IsOk"].ToString()=="True")
CS程序中基于菜单和工具栏的权限设计CS程序中基于菜单和工具栏的权限设计
CS程序中基于菜单和工具栏的权限设计{
CS程序中基于菜单和工具栏的权限设计
if(toolStrip1.Items[k].Text.Trim()==dt.Rows[z]["RightName"].ToString())
CS程序中基于菜单和工具栏的权限设计CS程序中基于菜单和工具栏的权限设计
CS程序中基于菜单和工具栏的权限设计{
CS程序中基于菜单和工具栏的权限设计toolStrip1.Items[k].Enabled
=true;
CS程序中基于菜单和工具栏的权限设计
break;
CS程序中基于菜单和工具栏的权限设计}

CS程序中基于菜单和工具栏的权限设计}

CS程序中基于菜单和工具栏的权限设计
else
CS程序中基于菜单和工具栏的权限设计CS程序中基于菜单和工具栏的权限设计
CS程序中基于菜单和工具栏的权限设计{
CS程序中基于菜单和工具栏的权限设计
if(toolStrip1.Items[k].Text.Trim()==dt.Rows[z]["RightName"].ToString())
CS程序中基于菜单和工具栏的权限设计CS程序中基于菜单和工具栏的权限设计
CS程序中基于菜单和工具栏的权限设计{
CS程序中基于菜单和工具栏的权限设计toolStrip1.Items[k].Enabled
=false;
CS程序中基于菜单和工具栏的权限设计
break;
CS程序中基于菜单和工具栏的权限设计}

CS程序中基于菜单和工具栏的权限设计}

CS程序中基于菜单和工具栏的权限设计}

CS程序中基于菜单和工具栏的权限设计}

CS程序中基于菜单和工具栏的权限设计}

CS程序中基于菜单和工具栏的权限设计
else
CS程序中基于菜单和工具栏的权限设计CS程序中基于菜单和工具栏的权限设计
CS程序中基于菜单和工具栏的权限设计{
CS程序中基于菜单和工具栏的权限设计
this.menu.Enabled=false;
CS程序中基于菜单和工具栏的权限设计
this.toolStrip1.Enabled=false;
CS程序中基于菜单和工具栏的权限设计}

CS程序中基于菜单和工具栏的权限设计
CS程序中基于菜单和工具栏的权限设计}

CS程序中基于菜单和工具栏的权限设计
else
CS程序中基于菜单和工具栏的权限设计CS程序中基于菜单和工具栏的权限设计
CS程序中基于菜单和工具栏的权限设计{
CS程序中基于菜单和工具栏的权限设计
this.menu.Enabled=false;
CS程序中基于菜单和工具栏的权限设计
this.toolStrip1.Enabled=false;
CS程序中基于菜单和工具栏的权限设计}

下面是关于CheckedListBox的部分代码:

privatevoidcklb_Function_ItemCheck(objectsender,ItemCheckEventArgse)
CS程序中基于菜单和工具栏的权限设计CS程序中基于菜单和工具栏的权限设计
CS程序中基于菜单和工具栏的权限设计{
CS程序中基于菜单和工具栏的权限设计
try
CS程序中基于菜单和工具栏的权限设计CS程序中基于菜单和工具栏的权限设计
CS程序中基于菜单和工具栏的权限设计{
CS程序中基于菜单和工具栏的权限设计
CS程序中基于菜单和工具栏的权限设计
stringuid=dgv_Users.SelectedRows[0].Cells["操作员"].Value.ToString();
CS程序中基于菜单和工具栏的权限设计
stringrid=cklb_Function.SelectedValue.ToString();
CS程序中基于菜单和工具栏的权限设计
if(Convert.ToBoolean(e.CurrentValue))
CS程序中基于菜单和工具栏的权限设计CS程序中基于菜单和工具栏的权限设计
CS程序中基于菜单和工具栏的权限设计{
CS程序中基于菜单和工具栏的权限设计ur.UpdateUserRight(uid,rid,
false);
CS程序中基于菜单和工具栏的权限设计}

CS程序中基于菜单和工具栏的权限设计
else
CS程序中基于菜单和工具栏的权限设计CS程序中基于菜单和工具栏的权限设计
CS程序中基于菜单和工具栏的权限设计{
CS程序中基于菜单和工具栏的权限设计ur.UpdateUserRight(uid,rid,
true);
CS程序中基于菜单和工具栏的权限设计}

CS程序中基于菜单和工具栏的权限设计
CS程序中基于菜单和工具栏的权限设计}

CS程序中基于菜单和工具栏的权限设计
catch(Exceptionex)
CS程序中基于菜单和工具栏的权限设计CS程序中基于菜单和工具栏的权限设计
CS程序中基于菜单和工具栏的权限设计{
CS程序中基于菜单和工具栏的权限设计MsgBox.Error(ex.Message);
CS程序中基于菜单和工具栏的权限设计}

CS程序中基于菜单和工具栏的权限设计}

CS程序中基于菜单和工具栏的权限设计


全选和全删

privatevoidbtn_AllSelect_Click(objectsender,EventArgse)
CS程序中基于菜单和工具栏的权限设计CS程序中基于菜单和工具栏的权限设计
CS程序中基于菜单和工具栏的权限设计{
CS程序中基于菜单和工具栏的权限设计
for(inti=0;i<cklb_Function.Items.Count;i++)
CS程序中基于菜单和工具栏的权限设计CS程序中基于菜单和工具栏的权限设计
CS程序中基于菜单和工具栏的权限设计{
CS程序中基于菜单和工具栏的权限设计cklb_Function.SetItemChecked(i,
true);
CS程序中基于菜单和工具栏的权限设计}

CS程序中基于菜单和工具栏的权限设计}

CS程序中基于菜单和工具栏的权限设计
CS程序中基于菜单和工具栏的权限设计
privatevoidbtn_AllDel_Click(objectsender,EventArgse)
CS程序中基于菜单和工具栏的权限设计CS程序中基于菜单和工具栏的权限设计
CS程序中基于菜单和工具栏的权限设计{
CS程序中基于菜单和工具栏的权限设计
for(inti=0;i<cklb_Function.Items.Count;i++)
CS程序中基于菜单和工具栏的权限设计CS程序中基于菜单和工具栏的权限设计
CS程序中基于菜单和工具栏的权限设计{
CS程序中基于菜单和工具栏的权限设计cklb_Function.SetItemChecked(i,
false);
CS程序中基于菜单和工具栏的权限设计}

CS程序中基于菜单和工具栏的权限设计}