表结构与内容
MenBh MenText Bhparent
0001 文件
0002 编辑
0005 打开 0001
0006 新建 0001
0011 access 数据库 0006
0012 VFP 的 Dbf 0006
0013 剪切 0002
0014 复制 0002
0015 完全复制 0014
Private m As New MainMenu()
Private Sub Form1_Load( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase .Load
Dim conn As New SqlConnection("server=localhost;uid=sa;pwd=;database=jiang")
Dim cmd As New SqlCommand("select * from a_menu ", conn)
Dim ds As New DataSet()
Dim sqldpr As New SqlDataAdapter(cmd)
sqldpr.Fill(ds, "menu")
Me .DataGrid1.DataSource = ds.Tables("menu")
' 创建关系
Dim dr As New DataRelation("self_menu", ds.Tables("menu").Columns("MenBh"), ds.Tables("menu").Columns("Bhparent"))
ds.Relations.Add(dr)
Dim r1 As DataRow
' 查找最高的菜单级别 , 也就是 Bhparent 列为空的行
For Each r 1 In ds.Tables("menu").Rows
If r1.IsNull("Bhparent") Then
addmenuitem(r1, Nothing )
End If
Next
Me .Menu = m ' 指定主窗体菜单
End Sub
' 递归函数
Private Sub addmenuitem( ByVal r As DataRow, ByVal item As MenuItem)
Dim mi As MenuItem
' 如果是最外层菜单,要直接添加
If item Is Nothing Then
mi = m.MenuItems.Add(r.Item("MenText"))
Else ' 如果是下级菜单要在菜单项的上级添加
mi = item.MenuItems.Add(r.Item("MenText"))
End If
Dim r2 As DataRow
For Each r 2 In r.GetChildRows("self_menu")
addmenuitem(r2, mi)
Next
End Sub
'--------------------------------------------------------一种方法的改进
‘ /////////////////////////////////////////////////////////////////////////////////////
‘ 继承自 menuitem 的类
‘ /////////////////////////////////////////////////////////////////////////////////////
Public Class mymenuitem
Inherits System.Windows.Forms.MenuItem
Public Sub New ( ByVal s As String , ByVal tag As String )
MyBase .New()
Me .Text = s
m_tag = tag
End Sub
Private m_tag As String
Public Property tag() As String
Get
Return m_tag
End Get
Set ( ByVal Value As String )
m_tag = Value
End Set
End Property
End class
本新闻共 2 页,当前在第 1 页 1 2