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

时间:2011-09-04 11:34:25

标签: c# winforms combobox

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

尝试按Items.Remove删除时,出错:

  

设置DataSource属性时无法修改项集合。

有什么建议吗?

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


代码:

public enum DefaultValueType
{
    None = 0,
    Static = 1,
    Query = 2
}

cBoxDefaultType.DataSource = Enum.GetValues(typeof(DefaultValueType));

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

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

3 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:2)

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

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

答案 2 :(得分:0)

同样适用于.NET 2.0(从枚举'SomeEnum'中删除'无效'项目):

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