Как показать значения перечисления в поле со списком? - PullRequest
12 голосов
/ 21 февраля 2011

Как показать значения перечисления в поле со списком?Приведенный ниже код приводит к тому, что в выпадающем списке все отображаемые имена называются caseHandler.cState.Я хотел, чтобы у него были настоящие имена значений перечисления.

Мое перечисление определено следующим образом:

public enum caseState
{
    Active = 1,
    Finished,
    Problem
}

У меня есть класс, который определяется следующим образом:

public class cState
{    
    public string _name;
    public int _id;

    public cState(int id,string name)
    {
        _name = name;
        _id = id;
    }
}

И код для заполнения моего комбинированного списка:

ArrayList AL = new ArrayList();

foreach (string cs in Enum.GetNames(typeof(caseState)))
{
    cState aEnum = new cState((int)Enum.Parse(typeof(caseState),cs),cs);
    AL.Add(aEnum);
}


cbState.DisplayMember = "_name";
cbState.ValueMember = "_id";

cbState.DataSource = AL;

Ответы [ 3 ]

22 голосов
/ 21 февраля 2011

Вы пытались использовать

cbState.DataSource = Enum.GetNames(typeof(caseState));

А при извлечении данных просто анализируй

9 голосов
/ 03 марта 2012

Enum

public enum Status { Active = 0, Canceled = 3 }; 

Установка выпадающих значений из него

cbStatus.DataSource = Enum.GetValues(typeof(Status));

Получение перечисления из выбранного элемента

Status status; 
Enum.TryParse<Status>(cbStatus.SelectedValue.ToString(), out status); 

http://amir -shenodua.blogspot.com / 2012/03 / сетчатый с использованием-перечислимый к заселить-комбо-box.html

2 голосов
/ 24 октября 2017

Здесь Мой код, вы можете иметь текст и значение вместе и заполнить Combobox

 public enum LayerType : int
{

    [Description("محوطه")]
    Area = 1,


    [Description("ساختمان")]
    Building = 2,


    [Description("بارانداز")]
    Wharf = 3,}

drpLayer.DataSource = Enum.GetValues(typeof(LayerType))
             .Cast<Enum>()
             .Select(value => new
        {
        (Attribute.GetCustomAttribute(value.GetType().GetField(value.ToString()), typeof(DescriptionAttribute)) as DescriptionAttribute).Description,
        value
         })
        .OrderBy(item => item.value)
        .ToList();
            drpLayer.DisplayMember = "Description";
            drpLayer.ValueMember = "value";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...