お世話になります。
環境
OS:XP
VC++.NET 2003 フォームアプリケーション(.NET)
リストビューのソートについて下記のページを参考に作成しましたが、
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfsystemwindowsformslistviewclasslistviewitemsortertopic.asp
リストビューのヘッダを押すたびに昇順、降順が切り替わり表示されるようにしたいのですが、どのようにしたらよいでしょうか。
お願いします。
昇順ソート用と降順ソート用の2つの IComparer を作っておいて、ヘッダがクリックされたときに、現在昇順ソートされていれば降順用に、現在降順ソートされていれば昇順用に切り替えればよいのでは?
お返事ありがとうございます。
現在のリストが昇順ソートか降順ソートされているかというのは、プロパティで判断できるのでしょうか。それともフラグを使って判断するのでしょうか。
よろしくお願いいたします。
ListView クラスのメンバをざっと眺めてみてください。
現在のソート順を一発で取得できそうなプロパティがありますか?
Sorting プロパティがありますが、これは違いそうですね。
他には…ありませんね。じゃあ自前で管理しておくしかないのでしょう。
ただ、一口にフラグと言っても、その持ち方は用途によって様々です。
DataView を連結していれば、DataView.Sort プロパティで判断できるかもしれません。
ListViewItemSorter に設定された、IComparer を実装するクラスにプロパティとして持たせても良いでしょう。
ColumnHeader クラスから派生した独自ヘッダオブジェクトを作って、そこにプロパティを設けるという手もあるかもしれません。
方法は一通りではありません。要求に応じて、最適解を探してみてください。
いつもありがとうございます。
あるクラスにpublic static変数を持たせて解決しました。
どうもありがとうございました。
ツイート | ![]() |