这可以很好地工作:
private void btnDelete_Click(object sender, EventArgs e)
{
for (int i = 0; i < listBox1.SelectedItems.Count; i++)
{
listBox1.Items.Remove(listBox1.SelectedItems[i].ToString());
i--;
}
}但这不起作用:
private void btnDelete_Click(object sender, EventArgs e)
{
listBox1.Items.Remove(listBox1.SelectedItems);
}为什么第二个btnDelete_Click不工作?我的意思是,我用鼠标选择listBox1上的一条线,然后按下按钮。.Remove函数不能识别我选择的哪一行吗?尽管我说的是.Remove(listBox1.SelectedItem),但必须要有selectedItem数组吗?SelectedItems这个词不是不言自明的吗?既然我用鼠标单击了listBox1上的行,程序或集成开发环境就不能知道选择了哪一行吗?为什么我仍然要使用SelectedItems[i]
发布于 2012-07-19 19:59:25
第二个示例不起作用的原因是,您试图以集合的形式传递多个项,以便一次删除。
要移除一个项目,你需要一次做一个,这就是为什么你需要循环(a loop )的原因。
另外,我可以建议使用ListView吗?我个人发现它们更容易使用,有更多的选择。
例如,您可以使用以下代码为ListView创建循环
foreach (ListViewItem item in listView1.SelectedItems)
{
item.Remove();
}如果您尝试一次仅删除一个选定的项目,则可以这样做
listBox1.Items.Remove(listBox1.SelectedItem);SelectedItem而不是SelectedItems,复数是它不能在没有循环的情况下处理的集合,单数是它可以理解的单个项。
发布于 2012-07-19 19:29:07
我认为SelectedItems需要索引编号。也许这就是你不能删除任何项目的原因。
发布于 2012-07-19 19:32:11
listBox1.SelectedItems返回选定项的集合。若要删除项,只能使用Remove()传递集合中的单个对象,或者使用RemoveAt()传递集合中对象的索引。
删除对象:
listBox1.Items.Remove(listBox1.SelectedItem);删除索引处的对象:
listBox1.Items.RemoveAt(5);没有RemoveRange()方法,这正是您要找的。
https://stackoverflow.com/questions/11559877
复制相似问题