【问题标题】:Sort a datasource combobox?对数据源组合框进行排序?
【发布时间】:2012-06-01 20:24:29
【问题描述】:

我在组合框中列出了文件夹,但我尝试按字母顺序排序文件夹,然后按数字排序,反之亦然。

我用来填充组合框的编码是

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

【问题讨论】:

    标签: .net vb.net


    【解决方案1】:

    你离正确的语法只有一英寸

    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 中,我在文件夹名称前添加了八个0 字符,然后将最后八个字符传递给排序。这对于“99999999”以下的文件夹应该足够了,如果您的“路径”中有混合名称,则未经测试

    【讨论】:

      【解决方案2】:

      确实

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

      还可以使用提供静态方法的IO.Directory。它将目录名称作为字符串而不是 DirectoryInfo 类返回。 DirectoryInfo 更适合需要对同一个目录执行多个操作。

      另外,我看不到 With-statement 在这里做什么。

      【讨论】:

      • 不起作用。 “名称不是字符串的成员”,表示 GetDirectories 返回的字符串不是 DirectoryInfo
      • @Steve:你是对的。我改变了我的例子(刚刚删除了.Name)。
      • +1 这是我的第一次尝试,然后我选择更正 OP 使用的方法,因为他似乎需要一些其他(不清楚)排序顺序,而 DirectoryInfo 方法提供了更多选项
      • @史蒂夫:+1。是的DirectoryInfo 为您提供更多选择。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-03-02
      • 2013-06-05
      • 2019-10-12
      • 2018-04-10
      • 1970-01-01
      • 2010-11-20
      相关资源
      最近更新 更多