如何在将数据源分配给枚举时从组合框中删除项
本文关键字:组合 删除 枚举 数据源 分配 | 更新日期: 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; });