首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >listBox selectedItem问题

listBox selectedItem问题
EN

Stack Overflow用户
提问于 2012-07-19 19:27:31
回答 5查看 838关注 0票数 2

这可以很好地工作:

代码语言:javascript
复制
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--;
    }
}

但这不起作用:

代码语言:javascript
复制
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]

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-07-19 19:59:25

第二个示例不起作用的原因是,您试图以集合的形式传递多个项,以便一次删除。

要移除一个项目,你需要一次做一个,这就是为什么你需要循环(a loop )的原因。

另外,我可以建议使用ListView吗?我个人发现它们更容易使用,有更多的选择。

例如,您可以使用以下代码为ListView创建循环

代码语言:javascript
复制
foreach (ListViewItem item in listView1.SelectedItems)
{
    item.Remove();
}

如果您尝试一次仅删除一个选定的项目,则可以这样做

代码语言:javascript
复制
listBox1.Items.Remove(listBox1.SelectedItem);

SelectedItem而不是SelectedItems,复数是它不能在没有循环的情况下处理的集合,单数是它可以理解的单个项。

票数 1
EN

Stack Overflow用户

发布于 2012-07-19 19:29:07

我认为SelectedItems需要索引编号。也许这就是你不能删除任何项目的原因。

票数 1
EN

Stack Overflow用户

发布于 2012-07-19 19:32:11

listBox1.SelectedItems返回选定项的集合。若要删除项,只能使用Remove()传递集合中的单个对象,或者使用RemoveAt()传递集合中对象的索引。

删除对象:

代码语言:javascript
复制
listBox1.Items.Remove(listBox1.SelectedItem);

删除索引处的对象:

代码语言:javascript
复制
listBox1.Items.RemoveAt(5);

没有RemoveRange()方法,这正是您要找的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11559877

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档