C# 在ListView中选择下一项
我有一个方法可以删除ListView中当前选定的项C# 在ListView中选择下一项,c#,winforms,listview,selectedindex,C#,Winforms,Listview,Selectedindex,我有一个方法可以删除ListView中当前选定的项 listView1.Items.Remove(listView1.SelectedItems[0]); 删除选定的一个后,如何在ListView中选择下一个 我试过类似的东西 var index = listView1.SelectedItems[0].Index; listView1.Items.Remove(listView1.SelectedItems[0]); listView1.SelectedItems[0].Index = in
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
谢谢。尝试使用listView1。SelectedIndices属性没有
SelectedIndex
属性。它有一个属性
获取控件中选定项的索引
如果删除一个项目,“下一个”项目的索引与刚才删除的索引相同。因此,我会确保您有
listview1.issynchronisewithCurrentItemTrue=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();
为了让它发挥作用,其他任何解决方案都不适合我
希望更有经验的程序员能给出更好的解决方案。我必须在上面的回答中再添加一行代码,再加上一个检查以验证计数是否超过:
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;
}
int-selectedIndex=listview.selectedDices[0];
选择dex++;
//防止最后一个元素出现异常:
如果(selectedIndex
changelistView1。选择editems[0]。Index=Index代码>至列表视图1.SelectedIndex=索引代码>我遗漏了什么吗?我在“listView1.SelectedX”下看到的是SelectedIndexChanged、SelectedDices和SelectedItems;在foreach语句中,但我得到一个错误。(对不起,我还是个初学者)@Abraham怎么了?您可以读取与原始版本相同的“无法分配到--它是只读的”以及“无法将int隐式转换为System.Windows.Forms.ListView.SelectedIndexCollection”ListView.SelectedIndexCollection
返回SelectedIndexCollection
而非int
类似i
。您应该使用foreach
循环来读取所选的所有索引。然后,您可以使用i
作为这些的索引。请阅读MSDN页面几次。好的,我会阅读它并在它工作后返回,谢谢。“CollectionViewSource在当前上下文中不存在”我是否缺少using语句?
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;
}