1. ホーム
  2. c#

[解決済み] 汎用リスト - リスト内の項目を移動する

2022-04-21 04:23:36

質問

つまり、一般的なリストと oldIndexnewIndex の値を指定します。

にあるアイテムを移動させたい。 oldIndex への newIndex ...なるべくシンプルに。

何かご提案があればお願いします。

備考

のアイテムの間に挟む必要があります。 (newIndex - 1)newIndex 以前 が削除されました。

解決方法は?

一般的なリスト"と言っているのは分かりますが、特に指定はしていません。 リスト(T) クラスを使用することができますので、別の方法を試してみましょう。

その ObservableCollection(T) クラスには 移動メソッド は、まさにあなたが望むことを行うものです。

public void Move(int oldIndex, int newIndex)

その下には 基本的に はこのように実装されています。

T item = base[oldIndex];
base.RemoveItem(oldIndex);
base.InsertItem(newIndex, item);

ということで、他の方が提案されているスワップ方式は、基本的には ObservableCollection は、独自のMoveメソッドで行っています。

update 2015-12-30です。 のソースコードを見ることができます。 移動 移動項目 .NETはオープンソースなので、Reflector/ILSpyを使わずに、今すぐcorefxのメソッドを自分自身で確認することができます。