[菜鸟请教] 如何自己编写MDI菜单代码实现诸如权限控制之类的操作

marki 2007-04-06 12:33:20
初学C#,请高手指点:

学写菜单权限控制程序(亦想用到VS2005菜单的新特性),但不知道如何下手,请教兄弟们,万望帮忙帮忙,给点示例代码,或提示及编写的注意点,谢谢了

...全文
346 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
bailang20 2007-04-21
  • 打赏
  • 举报
回复
抓取数时加权限
lnwuyaowei 2007-04-21
  • 打赏
  • 举报
回复
目前我的作法:
(1)取得菜单树.
(2)根据用户ID设置菜单树并存入数据库中.
(3)在窗体显示时,依据用户名取得菜单权限列表,并依据权限显示或不显示菜单.
问题是:如果用了toolstrip,那么toolstrip需要与菜单同步,那么需要一个同步的列表,自动化的程度就差了很多.

如何软件这一问题正在思考中,楼下继续.....
yueyu_555 2007-04-20
  • 打赏
  • 举报
回复
UP
neillove 2007-04-09
  • 打赏
  • 举报
回复
谢谢兄弟,此问题先冻结,留待以后再探讨.
//汗...CSDN少了冻结功能
marki 2007-04-09
  • 打赏
  • 举报
回复
谢谢兄弟,此问题先冻结,留待以后再探讨.
zhangliu_521 2007-04-06
  • 打赏
  • 举报
回复
http://www.chinaaspx.com/archive/Java/21049.htm
RexZheng 2007-04-06
  • 打赏
  • 举报
回复
做一个基类窗体
在load事件中遍历所有控件,根据条件赋于权限
zhangliu_521 2007-04-06
  • 打赏
  • 举报
回复
准备:
操作员表UserInfo(UserID,UserName)
权限项表MenuPower(MenuName,UserID)

使用:
1、读取当前操作员所具有的权限项:
//DataTable tbP ="SELECT MenuName FROM MenuPower WHERE UserID="&当前登录的操作员ID
string ConnectionString="连接字符串";
string sql="SELECT MenuName FROM MenuPower WHERE UserID="&当前登录的操作员ID;
SqlDataAdapter adp=new SqlDataAdapter(sql,ConnectionString);
DataTable tbP=new DataTable();
adp.Fill(tbP); 2、根据权限项处理菜单的可用状态:
Call InitPower(Me.MainMenu)'在Form_Load中调用
'以下是方法实现
Private Sub InitPower(ByVal parent As Menu)
For Each item As MenuItem In parent.MenuItems
If item.Text <> "-" Then '不处理分隔条
Dim Rows As DataRow() = tbP.Select("MenuName='" & item.Text & "'")
If Rows.Length Then
item.Enabled = True
Else
item.Enabled = False
End If
InitPower(item) '处理该菜单的子菜单
End If
Next
End Sub
权限管理:
TreeView:tvwMenu CheckBoxes=true
'创建菜单树节点
Private Sub CreateTree(ByVal parentMenu As Menu, ByVal parentTree As Object)
For Each item As MenuItem In parentMenu.MenuItems
If item.Text <> "-" Then
Dim Node As New TreeNode(item.Text)
Dim Rows As DataRow() = tbP.Select("MenuName='" & item.Text & "'")
If Rows.Length Then
item.Checked = True
Else
item.Checked = False
End If
If TypeOf parentTree Is TreeView Then
CType(parentTree, TreeView).Nodes.Add(Node)
Else
CType(parentTree, TreeNode).Nodes.Add(Node)
End If
CreateTree(item, Node)
End If
Next
End Sub
Private Sub tvwMenu_AfterCheck(ByVal sender As Object, ByVal e As System.Windows.Forms.TreeViewEventArgs) Handles tvwMenu.AfterCheck
'处理保存当前项的权限
'如果是选中则在MenuPower表中插入这条菜单记录
'否则删除这条菜单记录
'记得使用UserID做条件
End Sub

sz709 2007-04-06
  • 打赏
  • 举报
回复
如果简单点可以根据用户权限来设置菜单项的visible;

复杂点可以设置每个菜单项的权限级别,然后保存在数据表中,
然后根据不同用户加载不同菜单项.

110,535

社区成员

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

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

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