2012-03-12 13 views
4

私はlistViewと2つのボタン(UP、DOWN)を持っており、選択した項目を上下に移動したい。
私は、選択した項目と上の項目との間のスワップについて考えました。しかし、私が試したコードは、インデックスが読み込み専用であるため意味がありません。
また、鉱山や和はowrkではありません。私は全くインデックスをつぶすことができません。listviewでアイテムインデックスを変更するには?

private void btnDown_Click(object sender, EventArgs e) 
    { 
     listView1.SelectedItems[0].Index--; // It's ReadOnly. 
    } 


..だから私は、ユーザーに[PICでのようにこれらの項目のインデックスを変更する

enter image description here

おかげで私たちを聞かせてVBどのようなのListViewItemのインデックスを変更する機能を聞かせて行う方法事前に...

+0

はあなたが..私は少しコードを助けるかもしれない何を意味するか、ソースでどのような順序...多くを説明していただけますCarstenKö[email protected]リスト – Carsten

+0

のソース内の順序を変更する必要があります。 –

+0

ロルコード?最初にコードから有用なものを見ずにコードを生成する方法はありますか? - あなたはリストのソースに日付を入力します - 私はどのように見えるのですか?* to * - このデータはあなたが交換したいアイテムの順序を変更する場所です* – Carsten

答えて

13

最初にremove the selected itemにしてから、新しい位置に追加し直してください。

例えば、1つの位置までアイテムを移動するには:次

var currentIndex = listView1.SelectedItems[0].Index; 
var item = listView1.Items[index]; 
if (currentIndex > 0) 
{ 
    listView1.Items.RemoveAt(currentIndex); 
    listView1.Items.Insert(currentIndex-1, item); 
} 
+1

それは働いて..まったく:) –

0

がリストの一番上にある項目の再注文を処理し、リストの一番下にそれを作るためにM 4 Nの答えに改良したものです

int currentIndex = listView1.SelectedItems[0].Index; 
ListViewItem item = listView1.Items[currentIndex]; 
if (currentIndex > 0) 
{ 
    listView1.Items.RemoveAt(currentIndex); 
    listView1.Items.Insert(currentIndex - 1, item); 
} 
else 
{ 
    /*If the item is the top item make it the last*/ 
    listView1.Items.RemoveAt(currentIndex); 
    listView1.Items.Insert(listView1.Items.Count, item); 
} 
0

観測可能なコレクションの場合、次のものも呼び出すことができます:.Move(currentindex、newindex);

MSDN

関連する問題