2011-09-04 56 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; }); 
相關問題