我的MenuStrip有许多个 ToolStripMenuItem.
第一层有"基本信息管理,人事管理,备忘记录等";
第一层的第一项(基本信息管理)有"基础数据,员工信息提示"两项.其中每一项都是很多子项.
以此类推.
我想要的是直接遍历,直接要最底层的 ToolStripMenuItem.请问怎么做?
大家应该懂我要说的.谢谢....
第一层有"基本信息管理,人事管理,备忘记录等";
第一层的第一项(基本信息管理)有"基础数据,员工信息提示"两项.其中每一项都是很多子项.
以此类推.
我想要的是直接遍历,直接要最底层的 ToolStripMenuItem.请问怎么做?
大家应该懂我要说的.谢谢....
我的需求不难哈,只所以我这样做,是因为我把有用的代码,都放在底层的 ToolStripMenuItem,你懂的...
//用户权限设置.
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统一装"底层菜单".但是貌似时间复杂度变高了...