DOBON.NET DOBON.NETプログラミング掲示板過去ログ

ListViewの項目並び替え解除について

環境/言語:[WindowsXP,)、VB2005、.NET Frameworkのバージョン(1.0, 1.1)]
分類:[.NET]

VB2005はまだまだ初心者で、いつも参考にさせて頂き
大変助かっております。大変ありがとうございます。
今回初めて投稿させて頂きます。宜しくお願い致します。
質問内容についてですが、
当サイトでご説明のあります「ListViewの項目並び替え」の項目に
関連しますが、項目追加(削除)時のソート動作を一時的に解除する
方法はありますでしょうか。
(ListView内のデータ(大量)入替時に一時的にソート動作をしない
ようにしたいのですが・・・)
どなたかご享受の方、宜しくお願い致します
ListView のプロパティにある「Sorting」プロパティを、項目の追加前に「None」に設定しておき、全ての項目を追加したら「Ascending」や「Descending」に設定しなおせばいいと思います。

(もしかしたら最後に「Sort」メソッドを呼ばないといけないかもしれません)
■No20013に返信(オノデラさんの記事)
>  ListView のプロパティにある「Sorting」プロパティを、項目の追加前に「None」に設定しておき、全ての項目を追加したら「Ascending」や「Descending」に設定しなおせばいいと思います。
>
> (もしかしたら最後に「Sort」メソッドを呼ばないといけないかもしれません)

オノデラ様

 早速、ご回答頂き大変ありがとうございました。
早速実行してみます。
■No20013に返信(オノデラさんの記事)
>  ListView のプロパティにある「Sorting」プロパティを、項目の追加前に「None」に設定しておき、全ての項目を追加したら「Ascending」や「Descending」に設定しなおせばいいと思います。
>
> (もしかしたら最後に「Sort」メソッドを呼ばないといけないかもしれません)

お世話になります。.NET若葉です。

試してみましたが、状況は同じでした。
デバッガで確認しましたが、ListViewのSortingをNoneにしても
Classで定義した「Function Compare()関数」が毎回(ListView更新毎に)
実行されるようです。
注)Classで定義した「Function Compare()関数」とは、本HPに掲載されている
「ListViewの項目並び替え」に掲載されている例題で表現しています。
尚、ListView1.Clear後、再登録(Sorting=None)しても毎回
「Function Compare()関数」が実行されているようです。
あと、私の表現に誤りがありました。ソートさせないと言うよりも
「Function Compare()関数」が実行されないようにしたいということです。
言葉足らずで申し訳ございませんでした。
宜しくお願い致します。
では一時的に「ListView1.ListViewItemSorter」に null を代入するのはどうでしょうか?
■No20016に返信(オノデラさんの記事)
> では一時的に「ListView1.ListViewItemSorter」に null を代入するのはどうでしょうか?

オノデラ様

 ご回答、ご返信ありがとうございました。
 「ListView1.ListViewItemSorter = vbNullString」として、nullを
 一時的に代入することで、解決致しました。
 処理時間を大幅に短縮することが出来ました。

 オノデラ様、大変ありがとうございました。
 初めて投稿しましたが、大変迅速に、ご丁寧に返信してくださり
 大変感謝しております。本当に助かりました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板