【发布时间】:2021-11-13 09:14:53
【问题描述】:
嘿家伙,我想将组合框 SelectedValue 转换为 Enum 类型,但选定的值项是一个列表,如 {Title, Value}; Title 是“枚举项的描述属性”,Value 是“枚举项”。
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() 方法:
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 "";
}
我尝试这种方式投射:
var getEnum = (MyEnum)Enum.Parse(typeof(MyEnum), MyCombo.SelectedValue.ToString());
但是这样返回:
System.ArgumentException: '请求的值'{ Text = enumDescriptionText, Value = enumValue }' 未找到。'
你有解决这个问题的办法吗?
【问题讨论】: