Hej chlap, já wana obsazení combobox SelectedValue, aby Výčtový typ, ale vybrané hodnoty položky je seznam jako {Název, Hodnota}; Název je "popis atributu enum položky" a Hodnoty "enum položky".
var EnumItems = Enum.GetValues(typeof(MyEnum)).Cast<MyEnum>().Select(item =>
new
{
Text = item.GetEnumName(),
Value = item
}).ToList();
MyCombo.DataSource = EnumItems;
MyCombo.DisplayMember = "Text";
MyCombo.ValueMember = "Value";
GetEnumName() Metoda:
public static string GetEnumName(this System.Enum myEnum)
{
var enumDisplayName = myEnum.GetType().GetMember(myEnum.ToString()).FirstOrDefault();
if (enumDisplayName != null)
{
//return enumDisplayName.GetCustomAttribute<DescriptionAttribute>()?.Get();
return string.Format("{0}", (Attribute.GetCustomAttribute(myEnum.GetType().GetField(myEnum.ToString()), typeof(DescriptionAttribute)) as DescriptionAttribute).Description, false);
}
return "";
}
Snažím se tento způsob obsazení:
var getEnum = (MyEnum)Enum.Parse(typeof(MyEnum), MyCombo.SelectedValue.ToString());
ale tento způsob, jak se vrátit:
Systém.ArgumentException: 'Požadovaná hodnota{ Text = enumDescriptionText, Hodnota = enumValue }' nebyl nalezen.'
Máte nějaké řešení pro tento problém vyřešit?