Bind Combobox with Enum Description

后端 未结 2 1425
没有蜡笔的小新
没有蜡笔的小新 2021-02-13 23:18

I have seen through Stackoverflow that there is an easy way to populate a combobox with an Enumeration:

cbTipos.DataSource = Enum.GetValues(typeof(TiposTrabajo))         


        
2条回答
  •  北荒
    北荒 (楼主)
    2021-02-13 23:45

    Try this:

    cbTipos.DisplayMember = "Description";
    cbTipos.ValueMember = "Value";
    cbTipos.DataSource = Enum.GetValues(typeof(TiposTrabajo))
        .Cast()
        .Select(value => new
        {
            (Attribute.GetCustomAttribute(value.GetType().GetField(value.ToString()), typeof(DescriptionAttribute)) as DescriptionAttribute).Description,
            value
        })
        .OrderBy(item => item.value)
        .ToList();
    

    In order for this to work, all the values must have a description or you'll get a NullReference Exception. Hope that helps.

提交回复
热议问题