如何使用枚举值的自定义字符串格式设置枚举绑定组合框?
在Enum ToString中,描述了一种使用自定义属性的方法,DescriptionAttribute
如下所示:
Enum HowNice { [Description("Really Nice")]
ReallyNice,
[Description("Kinda Nice")]
SortOfNice,
[Description("Not Nice At All")]
NotNice
}
然后,您GetDescription
使用如下语法调用function :
GetDescription<HowNice>(NotNice); // Returns "Not Nice At All"
但是, ,这并没有真正帮助我
。
我要具有以下要求:
- 读取
(HowNice)myComboBox.selectedItem
将返回所选值作为枚举值。 - 用户应该看到用户友好的显示字符串,而不仅仅是枚举值的名称。因此
NotNice
,用户不会看到“ ”,而是会看到“Not Nice At All
”。 - 希望该解决方案将需要对现有枚举进行最少的代码更改。
显然,我可以为我创建的每个枚举实现一个新类,并覆盖它的ToString()
,但是每个枚举都需要大量工作,我宁愿避免这种情况。
有任何想法吗?
哎呀,我什至会拥抱一个赏金:-)
回答:
您可以编写一个TypeConverter来读取指定的属性,以在您的资源中查找它们。因此,您将获得对显示名称的多语言支持,而无需太多麻烦。
查看TypeConverter的ConvertFrom / ConvertTo方法,并使用反射读取枚举 字段 上的属性。
以上是 如何使用枚举值的自定义字符串格式设置枚举绑定组合框? 的全部内容, 来源链接: utcz.com/qa/405606.html