Listviewでのマウスアクションで項目を並べ替えたいのです。カラムクリックでのソートはできるのですが、項目を掴んでのドラックの並べ替えがうまくいきません。というか、取っ掛かりすらわかりません。せめて、取っ掛かりがわかれば、対処できるかも…なんて甘く考えています。どうぞ、ご教授ください。
> Listviewでのマウスアクションで項目を並べ替えたいのです。> カラムクリックでのソートはできるのですが、項目を掴んでのドラックの並べ替えがうまくいきません。列の並び替えという意味なら、AllowColumnReorder プロパティで行えるかと。
レスありがとうございます。当方の文章力の無さのせいですが、並べ替えたいのはlistViewに追加済みのテキスト項目をマウスで掴み上下にドラックして並べ替えたいのです。ですので、お教えいただいたAllowColumnReorder プロパティではないと思われます。言葉が足らず本当にすみません。できれば、引き続きご指導願えたらと思います。
> listViewに追加済みのテキスト項目をマウスで掴み上下にドラックして並べ替えたいのです。基本的には、以下のような流れになります。(1) HitTest メソッドを使い、ドラッグされた位置を判定します。(2) ListItems.Remove してから、Index を指定して .Add して挿入します。なお、Remove された ListItem は再利用できないので、Add の際にはテキスト情報やアイコン情報なども再指定する必要があります。
> なお、Remove された ListItem は再利用できないので、Add の際には> テキスト情報やアイコン情報なども再指定する必要があります。ならば、 ListItem を Add した後で、元のインデックス値(元より下に追加した場合)または元のインデックス値+1(元より上に追加した場合)の要素をRemove すればよいのではないでしょうか?
>> なお、Remove された ListItem は再利用できないので、Add の際には>> テキスト情報やアイコン情報なども再指定する必要があります。> ならば、 ListItem を Add した後で、元のインデックス値(元より下に追加した場合)またはその Add する際に、元の ListItemの各プロパティ(Text, SubItems, ListSubItems,SmallIcon, Bold, Ghosted, Key, Tag, ……)を再指定する必要があります。# .NET であれば、Remove したアイテムを、そのまま Add / Insert できるのだけれども。> Remove すればよいのではないでしょうか?重複登録できない情報(Key プロパティ)に関しては、Remove 後に設定する必要がありますね。