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

Listviewにレコード追加と共にソートされる事象の回避

環境/言語:[OS:WindowsXP SP2、開発環境:.NET Framework3.5 Visual C#2008]
分類:[.NET]

ふじけんと申します。
C#のプログラム歴7ヶ月程度の若輩者です。
趣味と実益を兼ねてCD小売店向けのアプリを作成しています。

DOBONさんのサイトはかゆいところに手が届くサンプルが豊富で
ネタに困るとちょくちょく参考にさせて頂いております。

Listviewのヘッダーをクリックすることで
レコードのソートを行うクラスも、DOBONさんのものを頂きまして
(参考URL:http://dobon.net/vb/dotnet/control/lvitemsort.html)
実装して、うまく動いたと喜んでいたのですが、
一つ困った現象が発生しております。

それはListviewにレコードが追加されるたびに、
全レコードが自動的にソートされてしまうという現象です。

具体的には、
CDのJANコードをバーコードリーダーで読み取り、
JANコードに紐づく価格情報をDBより抽出し、
それをListviewに出そうとしているのですが、
読み取りのたびにソート処理が走り、最新の読み取ったデータを
見失ってしまいます。

なぜ、このような動作をするのか皆目見当がつかず、困っております。
原因と対処方法が分かる方がいらっしゃいましたら
何とぞご教授の程、宜しくお願い致します。
MSDNのListView.Sortingプロパティページに次のようなことが書かれています。

「ListView.Sorting プロパティが SortOrder.None 以外の値に設定されている場合、または ListViewItemSorter プロパティが設定されている場合、項目が追加されると、自動的にリストが並べ替えられます。ラベル テキストが変更されても、項目は自動的に並べ替えられません。」

つまり、SortingプロパティをSortOrder.Noneにして、ListViewItemSorterプロパティを設定しなければよいということになりそうです。ListViewを並び替えるときだけListViewItemSorterプロパティを設定して、並び替えが済んだらnullにするという方法ではどうでしょうか?
早い回答ありがとうございます。
早速アドバイスのとおりに修正します。
管理人様

こんにちは ふじけんです

おかげさまで思い通りの動作ができるようになりました。
速くて適切なアドバイスをありがとうございました。

今後もよろしくお願いいたします。
解決済みに設定するのを忘れていました

■No24257に返信(ふじけんさんの記事)
> 管理人様
>
> こんにちは ふじけんです
>
> おかげさまで思い通りの動作ができるようになりました。
> 速くて適切なアドバイスをありがとうございました。
>
> 今後もよろしくお願いいたします。
解決済み!

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