Получить все папки и подпапки и файлы в каталоге Vb.Net - PullRequest
0 голосов
/ 28 апреля 2020

как я могу получить все папки и подпапки и файлы в указанном c каталоге пути?,

пример:

+ folder1
 - exe1
 + folder2
  - exe1
  - exe2
  + folder3
   - exe1

+ folder2
 - exe1

+ folder3

+ folder4

я использую сейчас на:

Sub GetDirectories(ByVal StartPath As String)
        For Each Dir As String In IO.Directory.GetDirectories(StartPath)
            ListBox1.Items.Add(Dir)
            ListBox1.Items.AddRange(IO.Directory.GetFiles(StartPath))
            ListBox1.Items.AddRange(IO.Directory.GetFiles(Dir))
        Next
    End Sub

и:

Dim files() As String = e.Data.GetData(DataFormats.FileDrop)

        For Each path In files

            For Each Dir As String In IO.Directory.GetDirectories(path)
                GetDirectories(path)
            Next

        Next

, но это не дает мне все файлы из других подпапок.

Редактировать: используя со списком и я хочу видеть полный путь при перетаскивании в папку и после этого давать все подпапки и файлы

1 Ответ

0 голосов
/ 28 апреля 2020

Вы можете лучше использовать TreeView для получения более удобных результатов.

Просто получите TreeView из панели инструментов и используйте следующий код для перечисления указанных c каталогов и подкаталогов ( включая файлы):

Private Enum ItemType
    Drive
    Folder
    File
End Enum

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    Dim node As TreeNode =
    TreeView1.Nodes.Add("Hello") ' Specifying Folder Names
    node.Tag = ItemType.Folder
    node.Nodes.Add("FILLER")
End Sub

Private Sub file_view_tree_BeforeExpand(sender As Object, e As TreeViewCancelEventArgs) Handles TreeView1.BeforeExpand

    Dim currentNode As TreeNode = e.Node
    currentNode.Nodes.Clear()

    Try
        'Now go get all the files and folders
        Dim fullPathString As String = currentNode.FullPath

        'Handle each folder
        For Each folderString As String In
            Directory.GetDirectories(fullPathString)

            Dim newNode As TreeNode =
            currentNode.Nodes.Add(Path.GetFileName(folderString))
            Dim x As String = Path.GetFileName("")
            newNode.Tag = ItemType.File
            newNode.Nodes.Add("FILLER")
        Next

        'Handle each file
        For Each fileString As String In
            Directory.GetFiles(fullPathString)
            'Get just the file name portion (without the path) :
            Dim newNode As TreeNode =
                currentNode.Nodes.Add(Path.GetFileName(fileString))
            newNode.Tag = ItemType.File
        Next
    Catch ex As Exception

    End Try
End Sub

Примечание. Я изменил этот поток переполнения стека и настроил его в соответствии с вашими требованиями.

TreeView Better Than ListBox

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...