110,566
社区成员
发帖
与我相关
我的任务
分享
//用户权限设置.
void UserPopeControl() {
var popes = from u in _Linq.T_UserPopes //根据Id获得当前登录的用户.
where u.FId == _UserId
select new {
PopeName = u.FPopeName,
NPope = u.FnPope
};
foreach(var p in popes) {
foreach(ToolStripDropDownItem item in _Items) {
if(item.Tag != null && item.Tag.ToString() == p.PopeName) { //找到权限名称.
item.Enabled = p.NPope == 0 ? false : true; //权限标志位0为不可用.
break; //找到后退出当前循环,继续查找.
}
}
}
}
//递归遍历,查找最底层菜单.
void RecursionBottonItem(ToolStripDropDownItem item) {
if(item.DropDownItems.Count == 0) { //底层菜单.
_Items.Add(item);
return;
}
else {
foreach(ToolStripDropDownItem subItem in item.DropDownItems) { //非底层菜单.
RecursionBottonItem(subItem);
}
}
}
private void F_Main_Load(object sender, EventArgs e) {
_Linq = new Linq.LinqToUserDataContext(); //实例化连接对象.
_Items = new List<ToolStripDropDownItem>();
foreach(ToolStripMenuItem menu in menuStrip1.Items) { //一级菜单.
foreach(ToolStripDropDownItem subMenu in menu.DropDownItems) { //一级菜单下的子菜单.
RecursionBottonItem(subMenu); //统一底层子菜单.
}
}
UserPopeControl(); //设置用于权限.
}
有"权限名称"和"标志",即0表示没有权限,否则有权限.
因为我试过全部放到一个递归方法中,感觉好麻烦,所以用List统一装"底层菜单".但是貌似时间复杂度变高了...