我有2个表格。一个是登录表单,一个是工作空间表单(设置为带有ToolStripMenuItem
控件的mdi容器)。
workspace form = f1
login form = f2
我的应用程序首先加载f1,然后同时加载f2。我在f1加载期间加载f2的代码如下:
Dim uLogin As New frm2
'set the parent form of child window
uLogin.MdiParent = Me
uLogin.Show()
在正确的密码和用户ID之后,应该卸载f2,进入工作区并根据用户表禁用菜单项:
'i have put this piece of code after success login function
Dim dr As Datarow
Dim userDS As Dataset
Dim userDT As Datatable
userDS = some sql db query
userDT = userDS.Tables(0)
If userDT.Rows.Count > 0 Then
dr = userDT.Rows(0)
End If
For Each dr In userDT.Rows
Dim ParentMenu As New ToolStripMenuItem(dr.Item("MI_MenuName").ToString)
ParentMenu.Enabled = CBool(dr.Item("RR_menuIsEnabled"))
Next dr
这是示例数据库用户表:
我的应用程序UX:
没有错误,用户已登录,但菜单项的启用/禁用无法按预期工作。查询TSQL是正确的,并使用VS 2005和MS SQL。
答案 0 :(得分:0)
假设您的主MenuStrip被称为“MenuStrip1”,并且其Modifiers()属性已更改为Public,您可以使用以下代码:
Dim f1 As frm1 = DirectCast(Me.MdiParent, frm1)
For Each dr In userDT.Rows
Dim mnuName As String = dr.Item("MI_MenuName").ToString()
Dim mnus() As ToolStripMenuItem = f1.MenuStrip1.Items.Find(mnuName, True)
If mnus.Length > 0 Then
mnus(0).Enabled = CBool(dr.Item("RR_menuIsEnabled"))
End If
Next dr