Ничего из этого не сработало для меня, но это сработало (и оно имело дополнительное преимущество, заключающееся в возможности иметь лучшее описание для названия каждого перечисления) Я не уверен, связано ли это с обновлениями .net или нет, но, тем не менее, я думаю, что это лучший способ. Вам нужно будет добавить ссылку на:
с использованием System.ComponentModel;
enum MyEnum
{
[Description("Red Color")]
Red = 10,
[Description("Blue Color")]
Blue = 50
}
....
private void LoadCombobox()
{
cmbxNewBox.DataSource = Enum.GetValues(typeof(MyEnum))
.Cast<Enum>()
.Select(value => new
{
(Attribute.GetCustomAttribute(value.GetType().GetField(value.ToString()), typeof(DescriptionAttribute)) as DescriptionAttribute).Description,
value
})
.OrderBy(item => item.value)
.ToList();
cmbxNewBox.DisplayMember = "Description";
cmbxNewBox.ValueMember = "value";
}
Тогда, когда вы хотите получить доступ к данным, используйте эти две строки:
Enum.TryParse<MyEnum>(cmbxNewBox.SelectedValue.ToString(), out MyEnum proc);
int nValue = (int)proc;