我有一个listView和两个按钮(向上,向下),我想向上或向下移动所选项目。
我已经考虑过在所选项目和上面的项目之间进行交换..但是我尝试的代码......没有意义,因为索引是只读的。
还有地雷或总和不欠人。我根本不能搞乱指数。
private void btnDown_Click(object sender, EventArgs e)
{
listView1.SelectedItems[0].Index--; // It's ReadOnly.
}
那么......我如何让用户能够改变ListViewItem索引,就像VB让我们改变这些项目索引一样[如图中所示]
提前感谢...
答案 0 :(得分:14)
您必须先remove the selected item,然后在新位置重新添加。
例如,将项目向上移动一个位置:
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)
以下是对M4N答案的改进,以处理列表顶部的项目的重新排序并将其置于列表的底部
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);
}
答案 2 :(得分:0)
如果是可观察的集合,你也可以调用:.Move(currentindex,newindex);