如何在将数据源分配给枚举时从组合框中删除项

本文关键字:组合 删除 枚举 数据源 分配 | 更新日期: 2023-09-27 18:07:22

如何从组合框中删除一个项目时,数据源被分配给枚举?

试图通过Items.Remove删除,得到错误:

设置DataSource属性时,不能修改项集合。

任何建议吗?

注意:我将继续使用枚举,因为我在代码的许多地方处理它。


代码:

public enum DefaultValueType
{
    None = 0,
    Static = 1,
    Query = 2
}
cBoxDefaultType.DataSource = Enum.GetValues(typeof(DefaultValueType));

在一种情况下,我想从组合框的选项中删除Query项。

cBoxDefaultType.Items.RemoveAt(2); // Throw exception

如何在将数据源分配给枚举时从组合框中删除项

我通过过滤枚举数组找到了解决方案:

Enum.GetValues(typeof(DefaultValueType))
    .Cast<DefaultValueType>()
    .Where(p => p != DefaultValueType.Query)
    .ToArray<DefaultValueType>()

您需要从DataSource中删除项目并重新绑定或仅使用.Items而不使用DataSource

在您的情况下,您需要将Enum转换为数组,然后使用它

同样适用于。net 2.0(从enum 'SomeEnum'中删除'Invalid'项):

comboBox1.DataSource = Array.FindAll((SomeEnum[])Enum.GetValues(typeof(SomeEnum)),
(SomeEnum SM) => { return SM != SomeEnum.Invalid; });