`
isiqi
  • 浏览: 16485594 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

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

J# 
阅读更多

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



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




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

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

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

//取出所有子菜单,添加到集合
for(inti=0;i<this.menu.Items.Count;i++)
{
ToolStripDropDownItemmenuItems
=(ToolStripDropDownItem)menu.Items[i];
if(menuItems.HasDropDownItems)
{
for(intk=0;k<menuItems.DropDownItems.Count;k++)
{
list.Add((ToolStripMenuItem)menuItems.DropDownItems[k]);
}

}

}

}

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

//读取相应的权限
DataSetds=UR.LaodUsersRight(Share.UserID);

if(!DataHelper.IsNullDataSet(ds))
{
DataTabledt
=ds.Tables[0];

if(!DataHelper.IsNullDataTable(dt))
{
for(inti=0;i<dt.Rows.Count;i++)
{
for(intj=0;j<list.Count;j++)
{
if(dt.Rows[i]["IsOk"].ToString()=="True")
{
if(dt.Rows[i]["RightName"].ToString()==list[j].Text)
{
list[j].Enabled
=true;
break;
}

}

else
{
if(dt.Rows[i]["RightName"].ToString()==list[j].Text)
{
list[j].Enabled
=false;
break;
}

}

}

}


//遍历所有的工具栏
for(intk=0;k<this.toolStrip1.Items.Count;k++)
{
for(intz=0;z<dt.Rows.Count;z++)
{
if(dt.Rows[z]["IsOk"].ToString()=="True")
{
if(toolStrip1.Items[k].Text.Trim()==dt.Rows[z]["RightName"].ToString())
{
toolStrip1.Items[k].Enabled
=true;
break;
}

}

else
{
if(toolStrip1.Items[k].Text.Trim()==dt.Rows[z]["RightName"].ToString())
{
toolStrip1.Items[k].Enabled
=false;
break;
}

}

}

}

}

else
{
this.menu.Enabled=false;
this.toolStrip1.Enabled=false;
}


}

else
{
this.menu.Enabled=false;
this.toolStrip1.Enabled=false;
}

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

privatevoidcklb_Function_ItemCheck(objectsender,ItemCheckEventArgse)
{
try
{

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

else
{
ur.UpdateUserRight(uid,rid,
true);
}


}

catch(Exceptionex)
{
MsgBox.Error(ex.Message);
}

}


全选和全删

privatevoidbtn_AllSelect_Click(objectsender,EventArgse)
{
for(inti=0;i<cklb_Function.Items.Count;i++)
{
cklb_Function.SetItemChecked(i,
true);
}

}


privatevoidbtn_AllDel_Click(objectsender,EventArgse)
{
for(inti=0;i<cklb_Function.Items.Count;i++)
{
cklb_Function.SetItemChecked(i,
false);
}

}

分享到:
评论

相关推荐

    c# winform 仿OUTLOOKBAR控件及菜单权限控制

    5. 使用OutlookBar控件展示功能区,根据权限加载相应的子菜单或工具栏。 项目中的"OutLookBarDemo"可能包含以下文件: - Form.cs:主窗体的代码,包含了OutlookBar和菜单的创建、权限控制逻辑。 - Database.cs:...

    PhotoShopCS4 语言包(含中文)

    这样,无论是菜单栏、工具提示还是帮助文档,都将显示为中文,使操作更为便捷。 6. 注意事项:尽管语言包可以改善用户体验,但请注意,非官方的语言包可能存在安全风险,建议从Adobe官方网站或其他可信渠道下载。...

    根据DataTable 动态生成 FORM菜单

    在Windows桌面应用中,用户界面(UI)的构建是至关重要的,而MenuStrip控件是用来创建菜单栏的一种工具。"根据DataTable 动态生成多级 FORM 菜单"这个主题涉及到了如何利用数据驱动的方法来构建灵活、可扩展的用户...

    asp.net ajax controltoolbar控件详解

    ASP.NET AJAX ControlToolbar控件是ASP.NET AJAX库中的一个强大工具,它允许开发人员在Web应用程序中创建类似于桌面应用程序的自定义工具栏。这个控件提供了丰富的交互性和用户体验,使得用户能够更方便地与Web应用...

    武汉理工大学C#实验4源代码_窗体和控件综合设计_多文档编辑器

    3. **控件使用**:TextBox和RichTextBox用于文本输入和显示,MenuStrip和ToolStrip用于创建菜单和工具栏,TabControl可以用于在多个文档之间切换。 4. **多文档界面(MDI)**:理解IsMdiContainer属性的用法,以及...

    EXTNET SYSTEM

    `.designer.cs`和`.cs`文件同样分别对应界面设计和业务逻辑,可能包括菜单的动态加载、权限控制等。 3. **隐藏栏**: - `HiddenBar.aspx`:这个名字可能表示一个可隐藏的侧边栏或者工具栏,它可能根据用户的操作或...

    C#开发的一个记事本程序

    1. **Windows Forms**:这是.NET Framework提供的用于构建桌面应用的UI框架,用于设计和布局记事本的用户界面,包括菜单栏、工具栏、文本框等控件。 2. **文本处理**:程序需要读取、写入和编辑文本文件,涉及到`...

    基于VB6.0+SQL2000的餐饮管理系统源码

    - **菜单栏、状态栏、工具栏的创建方法**:设计友好的用户界面,方便用户的操作。 - **使用DataGrid、DataList、MSFlexGrid控件显示数据**:将数据以表格形式呈现,便于用户查看和操作。 - **帮助文件的调用与制作...

    C#语言仿照Windows下的记事本程序

    1. **Windows Forms**: 构建用户界面的基础,包括各种控件如TextBox(文本框)用于显示和编辑文本,MenuStrip和ToolStrip用于创建菜单栏和工具栏。 2. **文本处理**: 使用String和StringBuilder类处理文本,如读取...

    html5+css实现旅行网站.zip

    运用HTML、CSS、JavaScript、jQuery等相关技术和DreamweaverCS6工具设计一个爱旅行旅游网站,要求网站具有用户登录验证、用户登陆后显示用户名,分为管理员、注册用户、游客三种访问权限,管理员可以修改后台信息、...

    c#宿舍管理系统源码

    - `Main.Designer.cs`:主窗体的设计,可能包括菜单栏、工具栏、状态栏等组件的定义。 - `AddDorm.Designer.cs`:添加宿舍窗体,可能包含输入宿舍号、楼栋、房间类型等信息的控件。 - `AlterDorm.Designer.cs`:...

    C#+SQL网上选课系统设计(源代码+LW+答辩PPT).zip

    1. **用户界面设计**:C#中的Windows Forms提供了丰富的控件库来构建用户界面,包括菜单栏、工具栏、表格等,以便用户方便地进行选课操作。 2. **数据库交互**:利用ADO.NET框架,通过 SqlConnection 连接SQL Server...

    hr.rar_VS2013_hr_management c#

    3. `MDI主窗口.Designer.cs` 和 `MDI主窗口.cs`:MDI(Multiple Document Interface)多文档界面,是系统的主要入口点,用于承载其他子窗口,提供统一的界面管理和菜单栏。 4. `项目管理模板.Designer.cs` 和 `项目...

    建站程序_简洁家纺企业网站模版

    "建站程序_简洁家纺企业网站模版"是一个专为纺织品和家纺行业设计的网页模版,它提供了高效且美观的解决方案,帮助企业快速建立在线存在感。 该模板的设计理念以简洁和大方为主,旨在突出家纺产品的优雅和舒适。...

    C#课设 winform 物业管理系统.zip

    2. **Windows Forms**:学习创建窗口、控件布局、事件处理、菜单栏和工具栏的创建等。 3. **数据库设计**:理解ER模型,创建物业、租户、账单等实体的数据库表结构。 4. **ADO.NET** 或 **Entity Framework**:用于...

    Access 2000数据库系统设计(PDF)---002

    26812.2.1 为窗体选择数据源 26812.2.2 用窗体向导创建基本窗体 26812.3 使用窗体设计窗口 27212.3.1 窗体设计窗口的元素 27312.3.2 窗体设计工具栏按钮和菜单 选择 27312.3.3 格式工具栏 27512.3.4 窗体的默认值 ...

    Access 2000数据库系统设计(PDF)---001

    26812.2.1 为窗体选择数据源 26812.2.2 用窗体向导创建基本窗体 26812.3 使用窗体设计窗口 27212.3.1 窗体设计窗口的元素 27312.3.2 窗体设计工具栏按钮和菜单 选择 27312.3.3 格式工具栏 27512.3.4 窗体的默认值 ...

    Access 2000数据库系统设计(PDF)---003

    26812.2.1 为窗体选择数据源 26812.2.2 用窗体向导创建基本窗体 26812.3 使用窗体设计窗口 27212.3.1 窗体设计窗口的元素 27312.3.2 窗体设计工具栏按钮和菜单 选择 27312.3.3 格式工具栏 27512.3.4 窗体的默认值 ...

    Access 2000数据库系统设计(PDF)---018

    26812.2.1 为窗体选择数据源 26812.2.2 用窗体向导创建基本窗体 26812.3 使用窗体设计窗口 27212.3.1 窗体设计窗口的元素 27312.3.2 窗体设计工具栏按钮和菜单选择 27312.3.3 格式工具栏 27512.3.4 窗体的默认值 ...

    Access 2000数据库系统设计(PDF)---011

    26812.2.1 为窗体选择数据源 26812.2.2 用窗体向导创建基本窗体 26812.3 使用窗体设计窗口 27212.3.1 窗体设计窗口的元素 27312.3.2 窗体设计工具栏按钮和菜单选择 27312.3.3 格式工具栏 27512.3.4 窗体的默认值 ...

Global site tag (gtag.js) - Google Analytics