Как удалить элемент из выпадающего списка, когда источник данных назначен для перечисления? - PullRequest
0 голосов
/ 04 сентября 2011

Как удалить элемент из выпадающего списка, когда источник данных назначен для перечисления?

При попытке удалить по Items.Remove получена ошибка:

Коллекция элементов не может быть изменена, если установлено свойство DataSource.

Есть предложения?

Примечание: я бы продолжал использовать enum, потому что я использую его во многих местах кода.


код:

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

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

В одном случае я хочу удалить элемент Query из опций в выпадающем списке.

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

Ответы [ 3 ]

5 голосов
/ 04 сентября 2011

Я нашел решение, отфильтровав массив перечисления:

Enum.GetValues(typeof(DefaultValueType))
    .Cast<DefaultValueType>()
    .Where(p => p != DefaultValueType.Query)
    .ToArray<DefaultValueType>()
2 голосов
/ 04 сентября 2011

Вам нужно удалить элемент из DataSource и заново привязать или использовать .Items без DataSource

В вашем случае вам нужно конвертировать Enum в массив, а затем работать с ним.

0 голосов
/ 25 сентября 2016

Также для .NET 2.0 (удалить недопустимый элемент из перечисления SomeEnum):

comboBox1.DataSource = Array.FindAll((SomeEnum[])Enum.GetValues(typeof(SomeEnum)),
(SomeEnum SM) => { return SM != SomeEnum.Invalid; });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...