【问题标题】:Search and remove item from listbox从列表框中搜索和删除项目
【发布时间】:2010-11-26 20:54:32
【问题描述】:

有没有办法根据字符串从列表框中删除项目?

我已经玩了几分钟,这是我目前所拥有的,但它不起作用

foreach(string file in LB_upload.Items)
{
    ftp.Upload(file);
    int x = LB_upload.Items.IndexOf(file);
    LB_upload.Items.RemoveAt(x);
}

我可以遍历每个项目,但我想做一些更优雅的事情

【问题讨论】:

  • 它不起作用,因为您正在更改您正在迭代的 IEnumerable

标签: c# .net search listbox


【解决方案1】:
while(LB_upload.Items.Count > 0)
{
  ftp.Upload(LB_upload.Items[0].ToString());
  LB_upload.Items.RemoveAt(0);
}

【讨论】:

  • 我也喜欢这个,但我认为约翰卡夫是赢家
  • 我改成这个作为答案。我必须添加一个 this.refresh 来显示盒子的更新。原因是因为我想 1) 显示文件正在移动,2 如果出现问题,您会看到剩下的文件。
【解决方案2】:

根据你的例子,我会做类似的事情;


foreach(string file in LB_upload.Items)
{
  ftp.Upload(file);
}
LB_upload.Items.Clear();

您可能遇到的问题是您在迭代列表时正在更改列表。这是一个很大的禁忌,并且已经在本网站上进行了报道。

【讨论】:

  • 哈哈,我想这是最优雅的方式(1 行代码)。
【解决方案3】:

根据您的问题的标题,您似乎不想删除所有项目,而只是删除其中的一些项目。如果是这样的话:

for (int i = LB_upload.Items.Count - 1; i >= 0; i--)
{
    if (somecondition)
    {
        ftp.Upload(LB_upload.Items[i]);
        LB_upload.Items.RemoveAt(i);
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-07
    • 2010-11-29
    • 1970-01-01
    相关资源
    最近更新 更多