Visual Basic 2010 - 无法在不显示路径的情况下列出目录

时间:2014-07-11 15:48:39

标签: visual-studio-2010

这是我的代码:

Sub DataLoad()
    Dim DirList As New ArrayList
    GetDirectories("C:\Surf\Oversigt\", DirList)


    For Each item In DirList
        ListBox4.Items.Add(item)
    Next


End Sub



Sub GetDirectories(ByVal StartPath As String, ByRef DirectoryList As ArrayList)
    Dim Dirs() As String = Directory.GetDirectories(StartPath)
    DirectoryList.AddRange(Dirs)

    For Each Dir As String In Dirs
        GetDirectories(Dir, DirectoryList)
    Next
End Sub

我只想显示listbox4中目录的名称,而不是目录的整个路径。现在它会显示如下:

C:\ Surf \ Oversigt \ Foldername等。

请帮忙

2 个答案:

答案 0 :(得分:1)

您可以更改

 DirectoryList.AddRange(Dirs)

这一行

DirectoryList.AddRange(Dirs.Select(Function (x) Path.GetFileName(x)).ToArray())

这将以一种不直观的方式使用Path.GetFileName,但如果您调用GetFileName传递完整路径名,则获取最后一个文件夹名称。

但是我对你的代码有疑问。这段代码是递归的,并且剥离完整路径,你怎么能识别两个具有相同名称但在不同子文件夹中的文件夹?

例如,假设你有一个

C:\Surf\Oversigt\MyFolder
C:\Surf\Oversigt\temp\MyFolder

您将使用

结束列表框
MyFolder
MyFolder

答案 1 :(得分:0)

行后

 Dim Dirs() As String = Directory.GetDirectories(StartPath)

只需替换

DirectoryList.AddRange(Dirs)

For Each Dir As String In Dirs
    DirectoryList.Add(Dir.Substring(Dir.LastIndexOf("\") + 1))
Next