Создать полосу меню выпадающем коллекции из каталогов
Я пытаюсь создать меню, которое создает новые пункты меню для каждого каталога и файлов в определенном каталоге. Каждый пункт меню, который является файлами, откроет соответствующий файл. Это будет похоже на меню Пуск Windows.
Что я уже пробовал:
До сих пор у меня есть следующий код:
Dim lst As New List(Of String), intIndex As Integer For Each tmp In GetDirectories("C:\", "*", IO.SearchOption.AllDirectories) If GetDirectories(tmp, "*", IO.SearchOption.AllDirectories).Count = 0 Then lst.Add(tmp.Substring(("C:\").Length)) 'Gets a list of all the directories that aren't parent directories and removes the root directory Next For Each itm In lst Dim tsi As ToolStripDropDownItem = MenuStrip1 For Each folder In Split(itm, "\") intIndex = 0 If tsi.DropDownItems.ContainsKey(folder) = False Then 'Checks if the menu already as a existing item for the directory from a previous run of loop tsi.DropDownItems.Add(folder) 'Adds menu item tsi.DropDownItems(intIndex).Name = folder 'Specify name of menu item If GetFiles(DrivePath & "WINDOWS\Start Menu\Programs\" & itm.Substring(0, itm.IndexOf(folder) + folder.Length)).Count > 0 Then 'If the directory has files in it then it will add them tsi = tsi.DropDownItems(intIndex) 'makes the menu item that was just created the menu item variable For Each file In GetFiles(DrivePath & "WINDOWS\Start Menu\Programs\" & itm) 'Loops through Dim index As Integer = 0 tsi.DropDownItems.Add(IO.Path.GetFileNameWithoutExtension(file)) 'Adds files to drop down of new menu item tsi.DropDownItems(index).Name = folder 'Specify name of menu item index += 1 Next End If intIndex += 1 End If Next Next
Отступы изменены, чтобы лучше вписаться в веб-браузер.
Я еще не включил обработчик событий для каждого пункта меню, который является файлом, но я знаю, как это сделать, поэтому добавлю его позже.
Надеюсь, мой код можно понять.
Richard MacCutchan
Почему бы не использовать элемент управления TreeView?
LeMS_Studios
Насколько я могу судить, я не мог использовать для этого TreeView. Я использую это в игре, которую я делаю, где его 1998 год, и у вас есть windows 95, и вы находите программное обеспечение для путешествий во времени и путешествуете в разные периоды времени с разными операционными системами. У оригинального разработчика игры было предварительно встроено меню "Пуск" (в поддельной среде Windows 95), но я бы хотел, чтобы меню "Пуск" создавалось настоящими папками и ярлыками.
W.G.C.
Что же здесь не работает?
LeMS_Studios
В настоящее время некоторые каталоги добавляются несколько раз, и все подменю являются подменю первого пункта родительского меню. Вот ссылка на изображение сравнения:
https://postimg.cc/MMn5DPYy
Изображение слева-это то, как оно выглядит в настоящее время, а справа-то, как выглядела предыдущая версия игры.
Надеюсь, это поможет!