2012-05-31 50 views
3

我列出了我的組合框中的文件夾,但我試圖按字母順序排序文件夾,然後按數字排序,反之亦然。對數據源組合框進行排序?

我的編碼來填充我的組合框是

With Combobox1.DataSource = 
    (From folder In New IO.DirectoryInfo("Path").GetDirectories 
    Select (folder.Name) 
    ).ToArray 
End With 

是否可以排序的組合框?感謝

感謝喜來你們倆的幫助,但它並沒有真正解決我的問題,因爲我有一個編號一樣1文件夾,50,115,189等

這些應該顯示爲

1 
50 
115 
189 

然而,它們顯示爲不確定

1 
115 
189 
50 

回答

3

你只是一英寸到正確的語法

Combobox1.DataSource = 
    (From folder In New DirectoryInfo("Path").GetDirectories() 
     Order By folder.Name 
     Select folder.Name 
    ).ToArray() 

,或者如果你喜歡全限定路徑變化NameFullName

編輯:快速修復您的要求。

Combobox1.DataSource = 
    (From folder In New DirectoryInfo("path").GetDirectories()  
     Order By ("00000000" + folder.Name).SubString(folder.Name.Length, 8)   
     Select folder.Name 
    ).ToArray() 

order by我,預先準備的文件夾名8個0字符,然後再通過最後的八個字符來排序。這應該足夠用於「99999999」的文件夾,如果在「路徑」中混合使用名稱,則不會進行測試。

+0

謝謝史蒂夫,請你看看我更新的帖子在頂部。 – JackSparrow

2

Combobox1.DataSource = 
    (From folder In IO.Directory.GetDirectories("Path") 
     Order By folder 
     Select folder 
    ).ToArray() 

也使用IO.Directory它提供靜態方法。它將目錄名稱作爲字符串返回,而不是DirectoryInfo類。當您必須在同一個目錄上執行多個操作時,DirectoryInfo會更好。

此外,我沒有看到With -statement在這裏做什麼。

+0

不起作用。 「名稱不是字符串的成員」,這意味着GetDirectories不返回字符串DirectoryInfo – Steve

+0

@Steve:你說得對。我改變了我的例子(剛剛刪除'.Name')。 –

+0

+1這是我的第一次嘗試,然後我選擇更正OP使用的方法,因爲看起來他需要其他(不清楚的)排序順序,而DirectoryInfo方法提供更多選項 – Steve