Hola mira eso es relativamente fácil yo ya lo hice con un menú guardado en la data y con treeview
te mando el codigo para que lo veas es facil
'Traemos los datos de de datos. Dim dtMenuItems As New DataTable 'Conexion a la base de datos donde esta nuestra tabla Menú. Dim cnDatos As New SqlConnection("Data Source=kolob;Initial Catalog=BDMUSSAFINAL;User ID=sa; password=sqlserver;") 'se invoca al procedimiento almacenado Dim daMenu As New SqlDataAdapter("ObtenerMenuAdmin", cnDatos) daMenu.SelectCommand.CommandType = CommandType.StoredProcedure 'llenamos el datatable daMenu.Fill(dtMenuItems) 'recorremos el datatable para agregar los elementos de que estaran en la cabecera del menú. For Each drMenuItem As Data.DataRow In dtMenuItems.Rows 'esta condicion indica q son elementos padre. If drMenuItem("ID").Equals(drMenuItem("PADREID")) Then Dim mnuMenuItem1 As New TreeNode mnuMenuItem1.Value = drMenuItem("ID").ToString mnuMenuItem1.Text = drMenuItem("NOMBRE").ToString mnuMenuItem1.NavigateUrl = drMenuItem("URL").ToString 'agregamos el Ítem al menú Tvmenu2.Nodes.Add(mnuMenuItem1) 'hacemos un llamado al metodo recursivo encargado de generar el árbol del menú. AddMenuItem1(mnuMenuItem1, dtMenuItems) End If Next
Private Sub AddMenuItem1(ByRef mnuMenuItem As TreeNode, ByVal dtMenuItems As Data.DataTable)
'recorremos cada elemento del datatable para poder determinar cuales son elementos hijos
'del menuitem dado pasado como parametro ByRef.
For Each drMenuItem As Data.DataRow In dtMenuItems.Rows
If drMenuItem("PADREID").ToString.Equals(mnuMenuItem.Value) AndAlso _
Not drMenuItem("ID").Equals(drMenuItem("PADREID")) Then
Dim mnuNewMenuItem As New TreeNode
mnuNewMenuItem.Value = drMenuItem("ID").ToString
mnuNewMenuItem.Text = drMenuItem("NOMBRE").ToString
mnuNewMenuItem.Value = drMenuItem("URL").ToString
'Agregamos el Nuevo MenuItem al MenuItem que viene de un nivel superior.
mnuMenuItem.ChildNodes.Add(mnuNewMenuItem)
'llamada recursiva para ver si el nuevo menú ítem aun tiene elementos hijos.
AddMenuItem1(mnuNewMenuItem, dtMenuItems)
End If
Next
End Sub
si tienes dudas pregunta
adios