如何在将数据源分配给枚举时从组合框中删除项目?
尝试按Items.Remove
删除时,出错:
设置DataSource属性时无法修改项集合。
有什么建议吗?
注意:我会继续使用枚举,因为我在代码中的许多地方处理它。
代码:
public enum DefaultValueType
{
None = 0,
Static = 1,
Query = 2
}
cBoxDefaultType.DataSource = Enum.GetValues(typeof(DefaultValueType));
在一种情况下,我想从组合框的选项中删除查询项。
cBoxDefaultType.Items.RemoveAt(2); // Throw exception
答案 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; });