链接视图列表/列表删除选定的项目
本文关键字:列表 项目 删除 视图 链接 | 更新日期: 2023-09-27 17:53:16
我在下面有点不清楚,所以为了澄清一些事情,我的最终目标是创建一个按钮来删除显示在列表视图中的值,该值是一个列表项。
这就是我想要的那种东西。studentList.Remove(listView1.SelectedIndices);
refreshList();
当然,如果这工作,我将在天堂,但它抛出错误,当然…
列表是private List<Student> studentList = new List<Student>()
,它是从另一个windows表单生成的。
我有一个问题,从我正在使用的列表/视图列表中删除项目。
下面是不断抛出错误的代码:
private void buttonDelete_Click(object sender, EventArgs e)
{
// studentList.RemoveAt(listBoxStudent.SelectedIndex);
for (int i = 0; i < listView1.Items.Count; i++)
{
studentList.RemoveAt(listView1.Items[i].Selected));
i--;
}
refreshList();
}
值被正确地放入列表视图,但我似乎无法找到一种方法来从列表视图和列表一起删除值(refreshlist()
清除并根据列表studentList
重新填充列表视图)
private void refreshList()
{
listView1.Items.Clear();
foreach (Student stu in studentList)
{
string[] filler = new string[5];
filler[0] = stu.Name.ToString();
filler[1] = stu.Residency.ToString();
filler[2] = stu.Credits.ToString();
filler[3] = stu.Tuition.ToString();
listView1.Items.Add(stu.Id.ToString()).SubItems.AddRange(filler);
listView1.View = View.Details;
}
}
edit:添加refreshlist()
Chris,
老兄,只要从列表中删除对象(忘记RemoveAt(index)),然后刷新视图…它将(或者至少它应该)从"模型"(即学生列表)中获取更改。
列表。删除方法:http://msdn.microsoft.com/en-us/library/cd666k3e.aspx
欢呼。基斯。
尝试将循环设置为
for(int i = studentList.Items.Count -1; i>=0; i--)
{
if(studentList.Items[i].Selected == true)
studentList.Items[i].Remove();
}
或以另一种方式
foreach (ListViewItem lvi in studentList.Items)
{
if (lvi.Selected == true)
lvi.Remove();
}
您通常不会尝试同时操作。修改底层数据源(在本例中为studentList),然后更新ListView。如果你修改你的studentList使用ObservableCollection
,它实际上会为你更新UI。
此外,如果您的集合的数据类型支持IComparable
,您应该能够使用listView1.Remove(),而不是RemoveAt()。
您正在更改尝试遍历的集合。一旦你删除了第一项,你就改变了列表,所以for循环会给你一个错误。给出的向后迭代(i——)的示例是解决问题的一种方法。