C# 删除WinC窗体中的列表框项

C# 删除WinC窗体中的列表框项,c#,winforms,listbox,C#,Winforms,Listbox,我不知道如何在c中正确地从winform列表框中删除项 列表框中填充了来自FileSystemWatcher的一些字符串,该字符串基本上会将修改的文件放入列表框中 然后我做了一个搜索功能,它可以删除不包含用户在文本框中输入内容的项目 这是密码 private void btnSearch_Click(object sender, EventArgs e) { if (!String.IsNullOrEmpty(txtSearch.Text) && lstFileEvent

我不知道如何在c中正确地从winform列表框中删除项

列表框中填充了来自FileSystemWatcher的一些字符串,该字符串基本上会将修改的文件放入列表框中

然后我做了一个搜索功能,它可以删除不包含用户在文本框中输入内容的项目

这是密码

private void btnSearch_Click(object sender, EventArgs e)
{
    if (!String.IsNullOrEmpty(txtSearch.Text) && lstFileEvents.Items.Count > 0)
    {
        for (int i = 0; i < lstFileEvents.Items.Count; i++)
        {
            if (!lstFileEvents.Items[i].ToString().Contains(txtSearch.Text))
            {
                lstFileEvents.Items.RemoveAt(i);
            }
        }
        lstFileEvents.Refresh();
    }
}
建议反向删除列表项。 第一套:

listBox1.SelectionMode = SelectionMode.MultiExtended; 
然后反向移除:

for (int i = listBox1.SelectedIndices.Count-1; i >= 0; i--)
{
   listBox1.Items.RemoveAt(listBox1.SelectedIndices[i]);
}

不是答案,但您可以使用AutoCompleteModeListBox属性SuggestAppend。这将根据文本字段中的内容缩短列表选择。@Grantwiney在问题中添加了@Ben Wha它到底是做什么的?我不认为我了解listbox的属性有一个自动完成模式,SuggestAppend选项会根据用户输入到listbox的内容缩短选项列表。例如,如果我输入T,抽屉将缩短为所有带有T的条目。如果我输入文本,它会将列表缩短为包含单词Text的项目,等等。实际上,它是这样的。如果用户想要搜索包含doc的所有内容,他应该同时找到像Documents、docs、doctor这样的行,搜索结果已经是这样了。不管怎样谢谢好的,这很有效。如果你有一些线索,你能再解释一下吗?在最初的问题中,我说我是一个有2年经验的程序员,我对这种笨拙的逻辑感到震惊,因为我无法正确地删除列表项,尽管这似乎是一项微不足道的任务。你为什么要倒着做?听起来很可笑,对不起,我没有Windows,所以我无法检查.NET Framework for Listbox.ObjectCollection并查看它在后台的工作方式。我猜逻辑是基于数据结构的类型的。我甚至读了API,它什么都没提到。最后,它可能是框架中从未修复/记录的bug。对不起,我帮不上忙了。
for (int i = listBox1.SelectedIndices.Count-1; i >= 0; i--)
{
   listBox1.Items.RemoveAt(listBox1.SelectedIndices[i]);
}