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
4

2 に答える 2

3

あなたは正しい構文にほんの少しです

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

Nameまたは、完全修飾パスの変更を希望する場合はFullName

編集:リクエストのクイックフィックス。

    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フォルダー名の先頭に 80文字を追加し、最後の 8 文字を並べ替えに渡します。これは、「99999999」までのフォルダーには十分なはずですが、「パス」に名前が混在している場合はテストされていません

于 2012-05-31T21:45:42.470 に答える
2

もちろん

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

IO.Directory静的メソッドを提供する whichも使用します。DirectoryInfoディレクトリ名をクラスではなく文字列として返します。DirectoryInfo同じディレクトリで複数の操作を実行する必要がある場合は、より適切です。

また、Withステートメントがここで何をしているのかわかりません。

于 2012-05-31T21:13:55.957 に答える