2013-03-18 41 views
1

如何將目錄列表存儲到數組中?我試過這種方法,但這不起作用。作爲數組存儲目錄列表vb2008

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 

    Dim parentinfo As New DirectoryInfo("C:\myfiles") 

    counter1 = My.Computer.FileSystem.GetFiles("C:\myfiles") 
    dirsize = counter1.Count 

    ReDim directory(dirsize) 

    For Each dir As FileSystemInfo In parentinfo.GetFileSystemInfos() 
     Dim i As Integer = 0 
     directory(i) = dir.Name 
     ComboBox1.Items.Add(directory(i)) 
     i += 1 
    Next dir 

End Sub 
+0

我看不到你在任何地方聲明'directory()'......是全局的嗎? – 2013-03-18 05:01:54

+0

是的,它是全球的 – mmr 2013-03-18 05:57:44

+0

你的代碼是否有任何錯誤(編譯時/運行時)? – 2013-03-18 09:47:23

回答

0

試着做這樣的事情:

Public Sub New() 

    Dim directories As New List(Of DirectoryInfo) 

    Call Me.InitializeComponent() 

    Call Me.ComboBox1.Items.Clear() 
    For Each directory As DirectoryInfo In (New DirectoryInfo("C:\")).GetDirectories() 
     Call directories.Add(directory) 
     Me.ComboBox1.Items.Add(directory.Name) 
    Next 

End Sub 

這將生成一個列表DirectoryInfodirectories對象在指定的路徑中的所有目錄。它還將所有的目錄名稱使用ToArray()擴展方法添加到組合框(在這種情況下Combobox1

UPDATE

就意識到你問一個數組明確,你可以改變一個列表陣列。所以在這種情況下,你可以調用directories.ToArray()來獲得你的數組,或者你可以使用我寫的一個數組代碼,但坦白地說,爲什麼要使用一個數組,如果你可以使用一個列表?

如果你想用數組來做這裏的代碼:

Public Sub New() 

    Dim i as integer 

    Call Me.InitializeComponent() 

    ReDim directory(i) 
    For Each dir As DirectoryInfo In (New DirectoryInfo("C:\")).GetDirectories() 
     directory(i) = dir 
     Me.ComboBox1.Items.Add(directory.Name) 
     i += 1 
     ReDim Preserve directory(i) 
    Next 

End Sub 

但是我認爲這樣做是背後的痛處......

+0

我將如何聲明目錄?它定義爲Dim目錄時會給出錯誤作爲新建列表(DirectoryInfo) – mmr 2013-03-19 08:49:17

+0

您遇到的錯誤是什麼?既然你已經定義了全局目錄,試着給本地變量一個不同的名字,或者把全局變量定義爲一個List而不是一個數組。 – 2013-03-19 09:05:13

+0

我遵循我的模式來閱讀目錄..但這有助於我理解數組。 – mmr 2013-03-19 09:10:43

相關問題