如果编历菜单项,如菜单名在权限字符串有则可可用否则为不可用?

qjw9004 2012-09-16 11:16:46
我写的代码如下:

private void LoadUserPower(MenuStrip MenuS, string userPower)
{
for (int i = 0; i < MenuS.Items.Count; i++) //遍历MenuStrip控件中主菜单项
{
if (userPower.IndexOf(((ToolStripDropDownItem)MenuS.Items[i]).Text) != -1) //当节点名称与菜单项名称相等时
{
((ToolStripDropDownItem)MenuS.Items[i]).Enabled = true;
}
else
{
((ToolStripDropDownItem)MenuS.Items[i]).Enabled = false;
}
ToolStripDropDownItem newmenu = (ToolStripDropDownItem)MenuS.Items[i];
if (newmenu.HasDropDownItems && newmenu.DropDownItems.Count > 0) //遍历二级菜单项
for (int j = 0; j < newmenu.DropDownItems.Count; j++)
{
if (userPower.IndexOf((newmenu.DropDownItems[j]).Text) != -1)
{
(newmenu.DropDownItems[j]).Enabled = true;
}
else
{
(newmenu.DropDownItems[j]).Enabled = false;
}
ToolStripDropDownItem newmenu2 = (ToolStripDropDownItem)newmenu.DropDownItems[j]; if (newmenu2.HasDropDownItems && newmenu2.DropDownItems.Count > 0) //遍历三级菜单项
for (int p = 0; p < newmenu2.DropDownItems.Count; p++)
{
if (userPower.IndexOf((newmenu2.DropDownItems[p]).Text) != -1)
{
(newmenu2.DropDownItems[p]).Enabled = true;
}
else
{
(newmenu2.DropDownItems[p]).Enabled = false;
}
}
}
}
}

错误提示为无法将类型为(标红色的部句子)
“System.Windows.Forms.ToolStripSeparator”的对象强制转换为类型“System.Windows.Forms.ToolStripDropDownItem”。
...全文
114 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
henanloncin 2012-09-17
  • 打赏
  • 举报
回复
for (int i = 0; i < dt.Rows.Count; i++)
{
m_menuid = dt.Rows[i]["menuid"].ToString();


foreach (ToolStripMenuItem ct1 in menuStrip1.Items)
{

for (int ii = 0; ii < ct1.DropDownItems.Count; ii++)
{


if (ct1.DropDownItems[ii].Name.ToString() == m_menuid)
{
ct1.DropDownItems[ii].Visible = false;
}

}

}


}


这是我做的遍历菜单项的代码,运行是可以的,供你参考
Conmajia 2012-09-16
  • 打赏
  • 举报
回复
因为继承关系是这样的:
ToolStripItem←ToolStripDropDownItem←ToolStripMenuItem
ToolStripItem←ToolStripSeparater
所以你可以把普通菜单项(ToolStripMenuItem)强制转换成(ToolStripDropDownItem),但是不能转ToolStripSeparater,因为它和ToolStripDropDownItem是兄弟类,不能互相转。。
Conmajia 2012-09-16
  • 打赏
  • 举报
回复
DropDownItems[j]返回的是ToolStripItem,不是ToolStripDropDownItem。。。你是粘贴的代码还是照书上敲的?。。。
管理员权限功能开发的整体梳理 创建项目 创建视图层,views层和model层 创建管理员登录模块,提交数据以及数据的验证一系列的功能 创建后端的菜单模块:增删改查的功能 菜单模块的添加视图层以及数据的传递以及保存数据到数据库的整个流程 把数据读取出来渲染到视图层的整个流程 介绍hui-admin UI框架的使用以及布局添加菜单模块的视图层    创建角色权限模块的视图层创建以及数据层的对接     前端js对角色授权按钮的处理     前端js对对每一个角色的复选框的数据绑定以及选中功能     通过多表连接读取数据库中后端分类的数据以及数据进行处理     传递菜单分类数据到视图层,书写js方法进行数据渲染功能     如何把选中的菜单传递到后端进行数据处理     后端如何接收到前端传递来的菜单分类数据如何再写入到数据库中     Django框架的models如何批量插入数据到数据库中    添加管理员模块以及指定当前管理员的角色    按照不同的管理员进行登录显示不同的角色所管理的菜单分类数据     多表操作管理员表角色表菜单表获取当前管理员管理的菜单     得到对应的菜单数据传递到前端进行渲染 本课程以实际案例开发为主,通过案例来巩固基础知识。

109,891

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧