Страница: 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 Автор ответа: 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 |
Поиск по форуму