c# -删除列表框中的所有项

本文关键字:删除 删除列 列表 | 更新日期: 2023-09-27 18:10:58

我有一个c# winform,它使用一个带有绑定列表的列表框作为数据源。该列表是从计算机上的文本文件创建的。我正试图为这个列表框创建一个"删除所有"按钮,我遇到了一点麻烦。

首先,这里是相关的代码:

private void btnRemoveAll_Click(object sender, EventArgs e)
    {
        // Use a binding source to keep the listbox updated with all items
        // that we add
        BindingSource bindingSource = (BindingSource)listBox1.DataSource;
        // There doesn't seem to be a method for purging the entire source,
        // so going to try a workaround using the main list.
        List<string> copy_items = items;
        foreach (String item in copy_items)
        {
            bindingSource.Remove(item);
        }
    }

我已经试着去获取bindingSource,但它给出了一个枚举错误,只是不会工作。据我所知,没有代码来清除整个源,所以我试着通过列表本身并通过项目名称删除它们,但这也不起作用,因为foreach实际上返回一个对象或其他东西,而不是字符串。

有什么建议吗?

c# -删除列表框中的所有项

您可以直接输入

listBox1.Items.Clear();

如果你使用一些通用列表将Listbox绑定到BindingSource,那么你可以这样做:

BindingSource bindingSource = (BindingSource)listBox1.DataSource;
IList SourceList = (IList)bindingSource.List;
SourceList.Clear();

另一方面,在你的表单、视图模型或任何东西中保持对底层列表的引用也会起到同样的作用。

编辑:这只适用于当你的List是一个ObservableCollection。对于普通的List,你可以尝试在BindingSource上调用ResetBindings()来强制刷新。