2012-05-31 48 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