16,717
社区成员
发帖
与我相关
我的任务
分享
Friend WithEvents ContextMenu1 As New System.Windows.Forms.ContextMenu
'加载菜单
Private Sub LoadMenuItem()
'//构建一个简单的层次表结构,菜单按此结构加载结构如下:
'AA
' AA1
' AA2
'BB
'(如结构层次不固定,则自已用递归加去加载,此处只是简单示例)
Dim dt As New DataTable
dt.Columns.Add("fldParent", GetType(Integer))
dt.Columns.Add("fldId", GetType(Integer))
dt.Columns.Add("fldmenuText", GetType(String))
dt.Rows.Add(New Object() {DBNull.Value, 1, "AA"})
dt.Rows.Add(New Object() {DBNull.Value, 2, "BB"})
dt.Rows.Add(New Object() {1, 3, "AA1"})
dt.Rows.Add(New Object() {1, 4, "AA2"})
Dim mi1 As MenuItem
Dim mi2 As MenuItem
For Each dr As DataRow In dt.Select("fldParent IS NULL")
'第一层的菜单
mi1 = New MenuItem(dr("fldmenuText"))
Me.ContextMenu1.MenuItems.Add(mi1)
For Each row As DataRow In dt.Select("fldParent=" & dr("fldId"))
'第二的菜单
mi2 = New MenuItem(dr("fldmenuText"))
'//添加子菜单
mi1.MenuItems.Add(mi2)
Next
'如果菜单层次非固定,则递归添加
'SubAdd(dt, dr("fldId"), mi1)
Next
End Sub
'递归添加方法
Private Sub AddSubMenuItem(ByVal dt As DataTable, ByVal parentId As Integer, ByVal parentMenuItem As MenuItem)
Dim mi As MenuItem
For Each row As DataRow In dt.Select("fldParent=" & parentId)
'第二的菜单
mi = New MenuItem(row("fldmenuText"))
'//添加子菜单
parentMenuItem.MenuItems.Add(mi)
AddSubMenuItem(dt, row("fldId"), mi)
Next
End Sub
Friend WithEvents ContextMenu1 As New System.Windows.Forms.ContextMenu
'加载菜单
Private Sub LoadMenuItem()
'//构建一个简单的层次表结构,菜单按此结构加载结构如下:
'AA
' AA1
' AA2
'BB
Dim dt As New DataTable
dt.Columns.Add("fldParent", GetType(Integer))
dt.Columns.Add("fldId", GetType(Integer))
dt.Columns.Add("fldmenuText", GetType(String))
dt.Rows.Add(New Object() {DBNull.Value, 1, "AA"})
dt.Rows.Add(New Object() {DBNull.Value, 2, "BB"})
dt.Rows.Add(New Object() {1, 3, "AA1"})
dt.Rows.Add(New Object() {1, 4, "AA2"})
Dim mi1 As MenuItem
Dim mi2 As MenuItem
For Each dr As DataRow In dt.Select("fldParent IS NULL")
'第一层的菜单
mi1 = New MenuItem(dr("fldmenuText"))
Me.ContextMenu1.MenuItems.Add(mi1)
For Each row As DataRow In dt.Select("fldParent=" & dr("fldId"))
'第二的菜单
mi2 = New MenuItem(dr("fldmenuText"))
'//添加子菜单
mi1.MenuItems.Add(mi2)
Next
'如果菜单层次非固定,则递归添加
'SubAdd(dt, dr("fldId"), mi1)
Next
End Sub
'递归添加方法
Private Sub AddSubMenuItem(ByVal dt As DataTable, ByVal parentId As Integer, ByVal parentMenuItem As MenuItem)
Dim mi As MenuItem
For Each row As DataRow In dt.Select("fldParent=" & parentId)
mi = New MenuItem(row("fldmenuText"))
parentMenuItem.MenuItems.Add(mi)
AddSubMenuItem(dt, row("fldId"), mi)
Next
End Sub