我有一个删除ListView中当前所选项目的方法
listView1.Items.Remove(listView1.SelectedItems[0]);
如何在删除选定的ListView后选择ListView中的下一个?
我试过像
这样的东西var index = listView1.SelectedItems[0].Index;
listView1.Items.Remove(listView1.SelectedItems[0]);
listView1.SelectedItems[0].Index = index;
但是我收到了错误
Property or indexer 'System.Windows.Forms.ListViewItem.Index' cannot be
assigned to -- it is read only
谢谢。
答案 0 :(得分:1)
ListView
没有SelectedIndex
属性。它有SelectedIndices
属性。
获取控件中所选项的索引。
ListView.SelectedIndexCollection indexes = this.ListView1.SelectedIndices;
foreach ( int i in indexes )
{
//
}
答案 1 :(得分:1)
我必须在上面的上一个答案中添加一行代码,另外还要检查以确认未超过计数:
int selectedIndex = listview.SelectedIndices[0];
selectedIndex++;
// Prevents exception on the last element:
if (selectedIndex < listview.Items.Count)
{
listview.Items[selectedIndex].Selected = true;
listview.Items[selectedIndex].Focused = true;
}
答案 2 :(得分:0)
尝试使用listView1.SelectedIndices属性
答案 3 :(得分:0)
如果删除项目,“下一个”项目的索引与刚刚删除的项目的索引相同。所以,我会确保你有listview1.IsSynchroniseDwithCurrentItemTrue = true
然后
var index = listView1.SelectedItems[0].Index;
listView1.Items.Remove(listView1.SelectedItems[0]);
CollectionViewSource.GetDefaultView(listview).MoveCurrentTo(index);
答案 4 :(得分:0)
我是按照以下方式完成的:
int selectedIndex = listview.SelectedIndices[0];
selectedIndex++;
listview.Items[selectedIndex].Selected = true;
答案 5 :(得分:0)
我实际上必须这样做:
int[] indicies = new int[listViewCat.SelectedIndices.Count];
listViewCat.SelectedIndices.CopyTo(indicies, 0);
foreach(ListViewItem item in listViewCat.SelectedItems){
listViewCat.Items.Remove(item);
G.Categories.Remove(item.Text);
}
int k = 0;
foreach(int i in indicies)
listViewCat.Items[i+(k--)].Selected = true;
listViewCat.Select();
要让它发挥作用,其他解决方案都没有为我工作。
希望更有经验的程序员可以提供更好的解决方案。