簡體   English   中英

將數據源分配給枚舉時,如何從組合框中刪除項目?

[英]How to remove an Item from a combobox when a datasource is assigned to an enum?

將數據源分配給枚舉時,如何從組合框中刪除項目?

嘗試通過Items.Remove刪除時,收到錯誤消息:

設置DataSource屬性后,將無法修改項目集合。

有什么建議嗎?

注意:我會繼續使用該枚舉,因為我在代碼中的很多地方都處理過該枚舉。


編碼:

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

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

在一種情況下,我想從組合框的選項中刪除“查詢”項。

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

我通過過濾Enumeration數組找到了解決方案:

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

您需要從DataSource刪除項目並重新綁定,或者只使用不帶DataSource .Items

在您的情況下,您需要將Enum轉換為array,然后使用它。

同樣對於.NET 2.0(從枚舉“ SomeEnum”中刪除“無效”項):

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM