winform怎么控制MenuStrip 显示哪些项

jxy12382163 2011-11-30 09:00:59
我想用MenuStrip显示 权限操作项 , 怎么控制MenuStrip 显示哪些项,不显示哪些项啊, 我数据库里存放的是 MenuStrip 各项的ID。
...全文
329 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
jxy12382163 2011-12-09
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 xuchonglei 的回复:]
引用 19 楼 jxy12382163 的回复:


C# code
我再追问下啊,怎么判断事件是否存在啊?


if(EventInfo!=null)
{
//存在
}
[/Quote]
在 Delegate Handle = Delegate.CreateDelegate(EventInfo.EventHandlerType, 方法所在类的实例, "方法名", true) 里, 没有 "方法名"还是会执行 if语句,报错“绑定到目标方法时出错。”
Tim_Andy 2011-12-06
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 jxy12382163 的回复:]


C# code
我再追问下啊,怎么判断事件是否存在啊?
[/Quote]

if(EventInfo!=null)
{
//存在
}
Tim_Andy 2011-12-01
  • 打赏
  • 举报
回复
反射


//事件信息
EventInfo EventInfo = control.GetType().GetEvent("Click");
//委托
Delegate Handle = Delegate.CreateDelegate(EventInfo.EventHandlerType, 方法所在类的实例, "方法名", true);
//注册事件
EventInfo.AddEventHandler(control, Handle);

jxy12382163 2011-12-01
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 wushuai1346 的回复:]

设计成刚开始的时候动态加载子项,这样方便管理,而且逻辑也会清晰点吧
[/Quote]
现在改成 动态加载了。

是获取原MenuStrip 有权限的项 然后添加新项到 动态加载的MenuStrip ,name和text都设置好了,想吧事件也添加到新建项里 遇见了问题。

直接NewItem.Click += new EventHandler(oldTtemArr[0].Click); (oldTtemArr是在原MenuStrip 根据权限查询到的动态数组,一般只有一项或者没有~) 提示Click 只能出现在+=和-=的左边~


怎么把 查询到的项的 Click事件添加到 新项里啊? 请大家不吝赐教下啊 ,
jxy12382163 2011-12-01
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 xuchonglei 的回复:]

反射
C# code


//事件信息
EventInfo EventInfo = control.GetType().GetEvent("Click");
//委托
Delegate Handle = Dele……
[/Quote]

我再追问下啊,怎么判断事件是否存在啊?
jxy12382163 2011-12-01
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 xuchonglei 的回复:]

反射
C# code


//事件信息
EventInfo EventInfo = control.GetType().GetEvent("Click");
//委托
Delegate Handle = Dele……
[/Quote]

再追问下啊,怎么判断这个事件是否存在啊?
wushuai1346 2011-11-30
  • 打赏
  • 举报
回复
设计成刚开始的时候动态加载子项,这样方便管理,而且逻辑也会清晰点吧
jxy12382163 2011-11-30
  • 打赏
  • 举报
回复
现在发现了新问题 有的项 用menuStrip1.Items.Find("项NAME", true); 查询不到

现在的情况是 我先让所有项全部隐藏,然后根据权限查询 有权限的项 显示 ,现在有的能查到 并显示, 但有的 如上说的 查询不到。
jxy12382163 2011-11-30
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 sdl2005lyx 的回复:]
如果你有好几层菜单,建议你使用Dev的Ribbon Form!
能更好实现你的想法!
[/Quote]
我想先弄弄吧 最后 实在弄不下去了 再改下
jxy12382163 2011-11-30
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 youzelin 的回复:]
在数据库中创建表,存储系统、菜单和角色的关系,加载系统时,根据用户权限动态加载菜单。
[/Quote]
差不多吧,我现在是存储 权限 依附窗体 窗体按钮 所在主窗体 对应主窗体按钮
sdl2005lyx 2011-11-30
  • 打赏
  • 举报
回复
如果你有好几层菜单,建议你使用Dev的Ribbon Form!
能更好实现你的想法!
youzelin 2011-11-30
  • 打赏
  • 举报
回复
在数据库中创建表,存储系统、菜单和角色的关系,加载系统时,根据用户权限动态加载菜单。
jxy12382163 2011-11-30
  • 打赏
  • 举报
回复
不行 MenuStrip 的子项 默认是不显示, visible改不了 ,
sdl2005lyx 2011-11-30
  • 打赏
  • 举报
回复
写个for循环,进行逻辑判断,最后设置父项的Visable
jxy12382163 2011-11-30
  • 打赏
  • 举报
回复
不过现在遇到了一个问题,他们下面的子项 默认不显示的 visible都是false, 我现在是 判断 如果子项都是false,那么 把父项隐藏
jxy12382163 2011-11-30
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 sdl2005lyx 的回复:]
引用 2 楼 jxy12382163 的回复:

那个 只能控制第一层


你可以递归设置嘛。。。
[/Quote]
理解了呵呵
sdl2005lyx 2011-11-30
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 jxy12382163 的回复:]

那个 只能控制第一层
[/Quote]

你可以递归设置嘛。。。
jxy12382163 2011-11-30
  • 打赏
  • 举报
回复
呵呵好像可以 ,我再测试一下啊
烟波钓 2011-11-30
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 jxy12382163 的回复:]
那个 只能控制第一层
[/Quote]
两种解决方案:
1.你的MenuStrip中的项都是根据当前权限去库中得到结果进行动态加载
2.界面初始化的时候把所有的菜单项都加载上,自己写一个递归方法设置他们的visible,如果首层和其它层的类型不一致,直接跟一下直接用他们的父类或者接口设置
jxy12382163 2011-11-30
  • 打赏
  • 举报
回复
那个 只能控制第一层
加载更多回复(1)

110,531

社区成员

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

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

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