Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: Добавление в меню подменю Добавлено: 18.03.06 20:13  

Автор вопроса:  yxaxa
Имеется байда которая называется menustrip1, там в ней всякие менюшки. Значь у меня есть на ней меню "пуск". в этом меню меню "программы". мне нужно чтоб из папки с:\документс анд сеттингс\юзверь\старт меню\ все папки в качестве подменю грузились в меню "программы". а также чтоб и те папки которые вложены в папки которые в старт меню(тут вы явно не поймете че я написал гы ща объясню) грузились как подменю.

и так терь объясняя нормально. например есть папки
с:\документс анд сеттингс\юзверь\старт меню\траляля\ура
с:\документс анд сеттингс\юзверь\старт меню\пурум
после выполнения кода должно получиться в меню "пуск"->"программы" меню "траляля"->"ура" и "пурум".
Я вот настряпал код, только он грузит только 2 уровня, т.е. то что я и описал. А мне нада чтобю хоть сколько было папок все грузились. Т.е. чтоб могло грузиться и допустим "траляля"->"еще одно"->"и еще одно" и т.д.

Вот код который грузит 2 уровня помогите сделать чтоб грузились все папки.

Private Sub ПУСКToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ПУСКToolStripMenuItem.Click
        Dim username As String = Mid(My.User.Name, My.User.Name.LastIndexOf("\") + 2, My.User.Name.Length - My.User.Name.LastIndexOf("\"))
        Dim xx() As String = System.IO.Directory.GetDirectories("C:\documents and settings\" & username & "\start menu\programs\")
        Dim i As Integer
        Dim y As Integer
        Dim temp As ToolStripMenuItem
        For i = 0 To xx.Length - 1
            xx(i) = Mid(xx(i), xx(i).LastIndexOf("\") + 2, xx(i).Length - xx(i).LastIndexOf("\"))
        Next
        For i = 0 To xx.Length - 1
            ПрограммыToolStripMenuItem.DropDownItems.Add(xx(i))
        Next
        For i = 0 To ПрограммыToolStripMenuItem.DropDownItems.Count - 1
            temp = ПрограммыToolStripMenuItem.DropDownItems.Item(i)
            xx = System.IO.Directory.GetDirectories("C:\documents and settings\" & username & "\start menu\programs\" & temp.ToString)
            For y = 0 To xx.Length - 1
                xx(y) = Mid(xx(y), xx(y).LastIndexOf("\") + 2, xx(y).Length - xx(y).LastIndexOf("\"))
            Next
            For y = 0 To xx.Length - 1
                temp.DropDownItems.Add(xx(y))
            Next
        Next
    End Sub

Ответить

  Ответы Всего ответов: 2  

Номер ответа: 1
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #1
Добавлено: 19.03.06 00:12
Юзай рекурсию

Ответить

Номер ответа: 2
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #2 Добавлено: 19.03.06 02:02
Я вот настряпал код


Во истину... настряпал..

Если тебе нужны только папки, то можно сделать следующим образом:

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'Получаем путь к нужной папке
        Dim Root As String = My.Computer.FileSystem.SpecialDirectories.Programs
        'Сканируем вложенные папки
        For Each Dir As String In Directory.GetDirectories(Root)
            'mnuProgramms-название корневого элемента меню, в твоем случае это ПрограммыToolStripMenuItem
            ScanFolder(Dir, mnuProgramms)
        Next
    End Sub

    Private Sub ScanFolder(ByVal Root As String, ByVal Strip As ToolStripMenuItem)
        'Извлекаем название папки
        Dim Name As String = Path.GetFileNameWithoutExtension(Root)
        'Добавляем элемент меню (включая EventHandler)
        Dim StripItem As ToolStripMenuItem = Strip.DropDownItems.Add(Name, Nothing, AddressOf MenuItemClick)
        'Запоминаем полный путь
        StripItem.Tag = Root
        'Рекурсивное сканирование
        For Each Dir As String In Directory.GetDirectories(Root)
            ScanFolder(Dir, StripItem)
        Next
    End Sub

    Public Sub MenuItemClick(ByVal sender As System.Object, ByVal e As System.EventArgs)
        'Обработчик события Click для добавленного элемента меню
        Process.Start(CType(sender, ToolStripMenuItem).Tag)
    End Sub

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам