在ListView中选择下一个项目
本文关键字:下一个 项目 选择 ListView | 更新日期: 2023-09-27 18:05:02
我有一个方法可以在ListView中删除当前选中的项目
listView1.Items.Remove(listView1.SelectedItems[0]);
我如何选择下一个在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
谢谢。
我必须在前面的答案中再添加一行代码,并检查计数是否超出:
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;
}
ListView
没有SelectedIndex
属性。它有一个SelectedIndices
属性
获取控件中选定项的索引。
ListView.SelectedIndexCollection indexes = this.ListView1.SelectedIndices;
foreach ( int i in indexes )
{
//
}
尝试使用listView1。SelectedIndices地产
如果您删除了一个项目,"下一个"项目的索引与您刚刚删除的项目的索引相同。所以我要确保你有listview1.IsSynchroniseDwithCurrentItemTrue = true
,然后是
var index = listView1.SelectedItems[0].Index;
listView1.Items.Remove(listView1.SelectedItems[0]);
CollectionViewSource.GetDefaultView(listview).MoveCurrentTo(index);
我是这样做的:
int selectedIndex = listview.SelectedIndices[0];
selectedIndex++;
listview.Items[selectedIndex].Selected = true;
实际上我必须这样做:
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();
让它工作,其他的解决方案都不适合我。
希望更有经验的程序员能给出更好的解决方案。