2011-09-04 54 views
0

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

当试图通过Items.Remove清除,遇到错误:

Items collection cannot be modified when the DataSource property is set.

什么建议吗?

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


代码:

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

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

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

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

回答

2

您需要从DataSource删除项目,重新绑定或只使用.Items没有DataSource

你的情况,你需要枚举转换为数组,然后使用它。

+0

我不能转换它,因为我使用值(整数),而不是处理字符串 –

+0

你可以发布一些代码? :) – Samich

+0

我编辑了这个问题,并添加了代码 –

4

我发现该溶液通过过滤枚举的数组:

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

这需要更多的选票。 – Captainlonate

0

也用于.NET 2.0(删除从枚举 'SomeEnum' '无效' 项):

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