2016-11-06 71 views
-1

只是想學習VB.net。 製作一些列出文件夾和子文件夾中所有文件的文件夾。 在根文件夾C:\中有一個2個子文件夾和som文件。 在執行列表框中填入包含子文件夾和子文件夾中文件的文件夾。 但是... 如果ID選擇G上一個文件夾:\事情變得陌生,而我只拿到上市Dir文件夾和子文件夾在一個文件夾中顯示結果,但不顯示其他文件夾

幾個文件夾或文件,這是我的第一個問題在這裏,因此,如果如果告訴你搞砸了,我對不起

Public Class Form1 
Dim R As IO.StreamReader 
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
    ListBox1.Items.Clear() 
    Me.FolderBrowserDialog1.ShowDialog() 
    Listfiles(Me.FolderBrowserDialog1.SelectedPath) 
End Sub 

Public Sub Listfiles(ByVal Pad As String) 

    Dim DirInfo As New IO.DirectoryInfo(Pad) 
    Dim FileObject As IO.FileSystemInfo 
    Dim strBESTAND As String 


    For Each FileObject In DirInfo.GetFileSystemInfos 
     'if FileObject is a folder 
     If FileObject.Attributes = IO.FileAttributes.Directory Then    ' 


      Listfiles(FileObject.FullName) 
      Me.ListBox1.Items.Add(FileObject.FullName) 
     Else 
      strBESTAND = (FileObject.FullName) 

      Dim information = My.Computer.FileSystem.GetFileInfo(strBESTAND) 

      ' If extention matches .......... 
      Dim strEXTENTIE As String 
      'if extentie is tikt in checkedlistbox 
      For i As Integer = 0 To (CheckedListBoxEXTENTIES.CheckedItems.Count - 1) ' iterate on checked items 
       'only us ticked items 
       strEXTENTIE = ((CheckedListBoxEXTENTIES.GetItemText(CheckedListBoxEXTENTIES.CheckedItems(i)).ToString)) 
       If information.Extension = "." & strEXTENTIE Then 
        strBESTAND = information.Name 
        Me.ListBox1.Items.Add(FileObject.Name) 

       End If 
      Next 
     End If 
    Next 
    MessageBox.Show("Done!") 
End Sub 

回答

1

默認情況下,字符串比較區分大小寫。你會錯過擴展有CheckedListBox中的另一種情況。使用

If String.Compare(information.Extension, "." & strEXTENTIE, _ 
        StringComparison.OrdinalIgnoreCase) = 0 Then 

但是,如果你在瀏覽文件夾

'Outside of subroutines 
Dim extensions As New HashSet(Of String)() 

'In Button1_Click before calling Listfiles 
For i As Integer = 0 To CheckedListBoxEXTENTIES.CheckedItems.Count - 1 
    extensions.Add("." & _ 
     CheckedListBoxEXTENTIES.CheckedItems(i).ToString().ToLowerInvariant()) 
Next 

然後你就可以檢查這樣的擴展之前準備的擴展,而無需通過CheckedListBox不必循環每個文件時,它會更有效。

If extensions.Contains(information.Extension.ToLowerInvariant()) Then 
+0

開始一個新項目,最小代碼。 已使用的文件系統屬性和單個變量(t0能夠選擇其他文件夾來查找.. 文件夾和子文件夾被發現並尋找通過,但....一個文件夾被識別爲文件?? 看着權限, OK 查看屬性,等於其他找到的子文件夾 –

+0

無法在此處獲取代碼:( –

+0

請參閱此視頻:[在Visual Studio 2015中創建簡單的Visual Basic應用程序](https://www.youtube.com/watch?v = njyrhf-wd70) –

相關問題