C#winform菜单权限分配,与菜单同步的treeView树状菜单权限控制使用心得
在网上查了很多,发现没有讲述关于--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 = ;
}
else//普通用户
{
HomePage.userLOA = ;
}
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 == )//权限限制
{
Excel导入.Enabled = false;
Excel导出.Enabled = false;
添加用户.Enabled = false;
修改密码.Enabled = false;
删除用户.Enabled = false;
}
toolStripStatusLabel2.Text = "当前用户:"+username+", 权限:"+useLOA+"";//状态栏显示用户名和权限
}
第四步,树形菜单权限控制
//TreeView树状菜单和ToolMenuStrip菜单调用的是相同的窗体,下面通过判断
//ToolMenuStrip菜单项的状态来决定是否打开对应窗体,经过实践证明,下面的方法是有效的。做到了
//TreeView树状菜单权限控制
//水文信息添加
if (FrmName == "Excel导入")
{
//根据菜单状态控制树型菜单项的状态
if (Excel导入.Enabled == false)
{
MessageBox.Show("当前用户无权使用该功能!");
}
else
{
添加frm tianjiafrm = new 添加frm();
tianjiafrm.StartPosition = FormStartPosition.CenterParent;
tianjiafrm.ShowDialog();
tianjiafrm.Dispose();//模态对话框显示
}
}
if (FrmName == "Excel导出")
{
if (Excel导出.Enabled==false)
{
MessageBox.Show("当前用户无权使用该功能!");
}
else
{
导出frm daochufrm = new 导出frm();
daochufrm.StartPosition = FormStartPosition.CenterParent;
daochufrm.ShowDialog();
daochufrm.Dispose();//模态对话框显示
}
}
//系统管理
if (FrmName == "添加用户")
{
if (添加用户.Enabled==false)
{
MessageBox.Show("当前用户无权使用该功能!");
}
else
{
添加用户frm tianjiafrm = new 添加用户frm();
tianjiafrm.StartPosition = FormStartPosition.CenterParent;
tianjiafrm.ShowDialog();
tianjiafrm.Dispose();
}
}
if (FrmName == "修改密码")
{
if (修改密码.Enabled==false)
{
MessageBox.Show("当前用户无权使用该功能!");
}
else
{
修改用户信息frm xiugaifrm = new 修改用户信息frm();
xiugaifrm.StartPosition = FormStartPosition.CenterParent;
xiugaifrm.ShowDialog();
xiugaifrm.Dispose();
}
}
if (FrmName == "删除用户")
{
if (删除用户.Enabled==false)
{
MessageBox.Show("当前用户无权使用该功能!");
}
else
{
删除用户frm sanchufrm = new 删除用户frm();
sanchufrm.StartPosition = FormStartPosition.CenterParent;
sanchufrm.ShowDialog();
sanchufrm.Dispose();
}
}
if (FrmName=="使用说明")
{
使用说明frm usertip = new 使用说明frm();
usertip.StartPosition = FormStartPosition.CenterParent;
usertip.ShowDialog();
usertip.Dispose();
}
if (FrmName=="关于")
{
AboutBox1 aboutfrm = new AboutBox1();
aboutfrm.StartPosition = FormStartPosition.CenterParent;
aboutfrm.ShowDialog();
aboutfrm.Dispose();
}
C#winform菜单权限分配,与菜单同步的treeView树状菜单权限控制使用心得的更多相关文章
- 菜鸟笔记:node.js+mysql中将JSON数据构建为树(递归制作树状菜单数据接口)
初学Web端开发,今天是第一次将所学做随笔记录,肯定存在多处欠妥,望大家海涵:若有不足,望大家批评指正. 进实验室后分配到的第一个项目,需要制作一个不确定层级树形菜单的数据接口,对于从来没实战编过程的 ...
- MVC身份验证.MVC过滤器.MVC6关键字Task,Async.前端模拟表单验证,提交.自定义匿名集合.Edge导出到Excel.BootstrapTree树状菜单的全选和反选.bootstrap可搜索可多选可全选下拉框
1.MVC身份验证. 有两种方式.一个是传统的所有控制器继承自定义Control,然后再里面用MVC的过滤器拦截.所以每次网站的后台被访问时.就会先走入拦截器.进行前端和后端的验证 一个是利用(MVC ...
- 纯CSS打造可折叠树状菜单
1:Html代码 <li> <label for="subsubfolder1">下级</label> <input id="s ...
- 自写JQ控件-树状菜单控件[demo下载]
一个多月没有写博客了,最近也弄一个基于JQ的树状菜单控件,在此分享给大家.另外呢,通过这个例子分享一下怎么写JQ控件的. 事实上工作中,也是经常遇到的,有些时候自己想实现一些前端效果,用网上一些插件吧 ...
- 学用纯CSS打造可折叠树状菜单
随着CSS3的发布,国外研究正如火如荼,但在国内还有很多人抱着IE不支持CSS3的想法,始终无动于衷不肯去学习.但是历史告诉我们,好的东西必将盛行,CSS3也终将也会替代CSS2,下面就和大家分享一个 ...
- js, 树状菜单隐藏显示
js写的不是很严谨~~~嘿嘿 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"& ...
- mysql用户权限分配及主从同步复制
赋予wgdp用户查询权限: grant select on wg_dp.* to 'wgdp'@'%' IDENTIFIED BY 'weigou123'; grant all privileges ...
- 后台树状菜单,js实现递归无限分类
//新闻类别管理 public function new_classify() { $arr = M('news_classify')->where("fid = 0")-& ...
- GUI自绘_其中左边树状菜单控件风格灵感来源于城市博物馆的壁灯效果。
GUI DEMO 下面都是去年做的演示DEMO,到目前为止,除了专门做界面库的公司,暂时还没有看到别人做的效果比我这个更好的. 下图在第一张图中有个错误,看出来了没有呢? 就是项目核算那儿,不应该是B ...
随机推荐
- UVa 10970 大块巧克力
https://vjudge.net/problem/UVA-10970 题意: 把一个m行n列的矩形巧克力切成mn个1×1的方块,需要切几刀. 思路: 可以考虑用动态规划的方法去做,当然,最简单的是 ...
- POJ 1011 Sticks(dfs+剪枝)
http://poj.org/problem?id=1011 题意:若干个相同长度的棍子被剪成若干长度的小棍,求每根棍子原来的可能最小长度. 思路:很经典的搜索题. 我一开始各种超时,这题需要很多剪枝 ...
- Java中的RTTI
RTTI可以帮助我们在运行时识别对象和类的信息. 一般传统的RTTI有三种实现方式: 1. 向上转型或向下转型(upcasting and downcasting),在java中,向下转型(父类转成子 ...
- python 元组中元组转为字典
#create a tuple tuplex = ((, , "r")) print(dict((y, x) for x, y in tuplex))
- bugfree 数据库配置 显示No such file or directory
把数据库服务器 localhost 改成127.0.0.1 sudo vi /etc/hosts 增加: 127.0.0.1 localhost 127.0.0.1 你的hostname ...
- Thunder团队第一周贡献分分配结果
小组名称:Thunder 项目名称:爱阅app 组长:王航 成员:李传康.代秋彤.邹双黛.苗威.宋雨.胡佑蓉.杨梓瑞 第一周贡献分分配结果 此次分配与原计划的分配方案基本一致.
- Hibernate入门第二课 Hibernate Tools for Eclipse Plugins安装
Hibernate入门第二课 Hibernate Tools for Eclipse Plugins安装 你们可以直接去,http://blog.csdn.net/wei_chong_chong/ar ...
- (转)sublime text3 3176激活
更改hosts:sudo vim /private/etc/hosts 127.0.0.1 www.sublimetext.com 127.0.0.1 license.sublimehq.com 激活 ...
- Turbolinks
Turbolinks Turbolinks® makes navigating your web application faster. 功能: 自动优化导航. 无需server端配合.全HTML网页 ...
- P1758 [NOI2009]管道取珠
考虑这个式子的意义. 不妨看做进行了两轮操作,这个式子显然等价于两次操作后得到的序列相同的方案数. 这个东西显然是可以dp的. 随便优化一下就成了O(n^3)