Recorrer el arbol de menús.

09/05/2006 - 15:54 por Chevy | Informe spam
Buenos días,

estoy buscando la menera de recorrer el árbol de menú de un formulario MDI.
La idea es recorrer el arbol de menú con sus submenús, capturar el nombre y
el texto y grabarlo en un objeto hastable para luego tener acceso a cada
elemento del arból de menú a través del nombre del menú, con el fin de
activar y desactivar los elementos según el perfil de un usuario.


mil gracias por sus comentarios y sugerencias

Eusebio

Preguntas similare

Leer las respuestas

#1 Rubén Vigón
09/05/2006 - 18:22 | Informe spam
Hola Chevy,

Sólo es cuestión de hacerte una pequeña función recursiva que recorra la colección «MenuItems»; por ejemplo, yo me escribí la siguiente para mostrar la estructura de menús de mi formulario principal MDI como una cadena de texto:

Dim sb As New System.Text.StringBuilder
CargarMenus(Me.Menu.MenuItems, sb, 0)
MessageBox.Show(sb.ToString)

Private Sub CargarMenus(ByVal mc As Menu.MenuItemCollection, ByVal sb As System.Text.StringBuilder, ByVal intNivel As Integer)
For Each mi As MenuItem In mc
sb.Append(New String(vbTab, intNivel) & mi.Text & vbNewLine)
If mi.MenuItems.Count > 0 Then CargarMenus(mi.MenuItems, sb, intNivel + 1)
Next mi
End Sub

Un saludo!

Rubén Vigón
Microsoft MVP Visual Basic
http://vigon.mvps.org
Respuesta Responder a este mensaje
#2 Chevy
09/05/2006 - 18:47 | Informe spam
Gracias, Rubén , es lo que necesitaba.

Eusebio


"Rubén Vigón" wrote:

Hola Chevy,

Sólo es cuestión de hacerte una pequeña función recursiva que recorra la colección «MenuItems»; por ejemplo, yo me escribí la siguiente para mostrar la estructura de menús de mi formulario principal MDI como una cadena de texto:

Dim sb As New System.Text.StringBuilder
CargarMenus(Me.Menu.MenuItems, sb, 0)
MessageBox.Show(sb.ToString)

Private Sub CargarMenus(ByVal mc As Menu.MenuItemCollection, ByVal sb As System.Text.StringBuilder, ByVal intNivel As Integer)
For Each mi As MenuItem In mc
sb.Append(New String(vbTab, intNivel) & mi.Text & vbNewLine)
If mi.MenuItems.Count > 0 Then CargarMenus(mi.MenuItems, sb, intNivel + 1)
Next mi
End Sub

Un saludo!

Rubén Vigón
Microsoft MVP Visual Basic
http://vigon.mvps.org

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida