ここから本文です

VisualBasicのListboxのアイテムの順番がバラバラに表示されます。

oxo********さん

2011/3/910:23:51

VisualBasicのListboxのアイテムの順番がバラバラに表示されます。

Listboxに画像ファイルが複数入ったフォルダをドロップすると、ファイル名が全て表示される様にしてあるんですが、それが順番どおり表示されません。

フォルダの中の表示は、
--------------------
1aa.jpg、←始まり
2aa.jpg、
3aa.jpg、
4aa.jpg、
~中略~
48aa.jpg、
49aa.jpg、
50aa.jpg、←最後
--------------------
と50枚順番どおりになっています。

ところがListboxにドロップすると、、
--------------------
10aa.jpg、←始まり
11aa.jpg、
12aa.jpg、
~中略~
19aa.jpg、
1aa.jpg、
20aa.jpg、
21aa.jpg、
~中略~
39aa.jpg、
3aa.jpg、
40aa.jpg、
~中略~
8aa.jpg、
9aa.jpg、←最後
--------------------
とこうなります。

たぶん文字列扱いでこうなるのかと思いますが。
これをフォルダの中の順番と同じく、1aaから順番どおりに表示させたいのですが、どうやったら良いのでしょうか?
因みにListBoxのプロパティのSortedはFalseにしてあります。TrueもFalseも結果は同じでしたが。

閲覧数:
264
回答数:
1
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

hot********さん

2011/3/911:39:41

独自のsortで並び替えるのはどうでしょうか?
フォームにListBox1がある状態で試してください。
aa.jpg以外で並び替えます。

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'例えば逆順にしてみる
For i As Integer = 20 To 1 Step -1
ListBox1.Items.Add(i.ToString + "aa.jpg")
Next

'ListBox1の要素を独自並べ替え
ArrayList.Adapter(ListBox1.Items).Sort(New mySorter)
End Sub

'独自ソート
Public Class mySorter
Implements IComparer
Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer Implements System.Collections.IComparer.Compare
x = x.ToString.Replace("aa.jpg", "")
y = y.ToString.Replace("aa.jpg", "")
Return CInt(x).CompareTo(CInt(y))
End Function
End Class



"aa.jpg"固定でなく、先頭の数字で並べ替える時(数字無しは0とする)の独自ソートルーチン

'独自ソート
Public Class mySorter
Implements IComparer
Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer Implements System.Collections.IComparer.Compare
Dim r As System.Text.RegularExpressions.Regex = New System.Text.RegularExpressions.Regex("^\d+")
Dim mx As System.Text.RegularExpressions.Match = r.Match(x.ToString)
Dim my As System.Text.RegularExpressions.Match = r.Match(y.ToString)
Return CInt("0" + mx.Value).CompareTo(CInt("0" + my.Value))
End Function
End Class

質問した人からのコメント

2011/3/9 16:08:50

降参 なるほど、てっきり何か設定を変えるだけで出来ると思ってたので、こんなに面倒だなんて知りませんでした。
うまく出来ました。あとは違うファイル名にも対応出来るように回答を参考に自分でいろいろやってみたいと思います。
いつも勉強になる回答ありがとうございます。

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる