PropertyGrid中的枚举显示为中文
参考http://www.cnblogs.com/yank/archive/2011/09/17/2179598.html
在上述文档的基础上做了改进。从EnumConverter类派生
显示效果:

1、定义枚举:在枚举中加入描述信息,作为我们需要显示的信息;
enum MediaType
{
[Description("文本")]
Text = ,
[Description("图片")]
Image = ,
[Description("视频")]
Video =
}
2、定义TypeConverter,对枚举进行转换;
class EnumTypeConverter:EnumConverter
{
private Type _enumType; public EnumTypeConverter(Type type): base(type)
{
_enumType = type;
} public override bool CanConvertTo(ITypeDescriptorContext context,Type destType)
{
return destType == typeof(string);
} public override object ConvertTo(ITypeDescriptorContext context,CultureInfo culture,object value, Type destType)
{
FieldInfo fi = _enumType.GetField(Enum.GetName(_enumType, value));
DescriptionAttribute da =(DescriptionAttribute)Attribute.GetCustomAttribute(fi, typeof(DescriptionAttribute)); if (da != null)
return da.Description;
else
return value.ToString();
} public override bool CanConvertFrom(ITypeDescriptorContext context,Type srcType)
{
return srcType == typeof(string);
} public override object ConvertFrom(ITypeDescriptorContext context,CultureInfo culture,object value)
{
foreach (FieldInfo fi in _enumType.GetFields())
{
DescriptionAttribute da =(DescriptionAttribute)Attribute.GetCustomAttribute(fi, typeof(DescriptionAttribute)); if ((da != null) && ((string)value == da.Description))
return Enum.Parse(_enumType, fi.Name);
}
return Enum.Parse(_enumType, (string)value);
}
}
3、属性使用TypeConverter;
class MediaInfo
{ [Category("媒体类型"), DisplayName("名称"), Description("Media Type")]
public string MediaName { get; set; } [DisplayName("媒体类型"), Description("Media Type")]
[Category("媒体类型"),TypeConverter(typeof(EnumTypeConverter))]
public MediaType MediaTypeDisplay { get; set; } public int ID { get; set; }
}
PropertyGrid中的枚举显示为中文的更多相关文章
- Winform中实现ZedGraph中曲线右键显示为中文
场景 Winforn中设置ZedGraph曲线图的属性.坐标轴属性.刻度属性: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10 ...
- tomcat中的URL参数为中文,servlet接收后显示乱码
URL中参数的值为中文时,servlet接收后显示为乱码,如下图: 这时候需要修改tomcat的中的server.xml文件.该文件路径为 tomcat安装目录下的conf文件夹. 为修改前的se ...
- 将浏览器地址栏中的 Request 参数显示成中文
希望实现:在当 JSP 页面发起请求,或者 Servlet 跳转时,地址栏中的参数可以显示成中文. 在通常情况下,浏览器地址栏中的URL地址为了适配不同的浏览器,会将URL地址信息转码为"I ...
- 如何让django模型中的字段和model名显示为中文
如何让django模型中的字段和model名显示为中文:在模型中加入class Meta即可 class People(models.Model): name = models.CharField(n ...
- Python将list中的unicode转换成中文显示
有这样一个列表: list = [{'channel_id': -3, 'name': u'\u7ea2\u5fc3\u5146\u8d6b'}, {u'seq_id': 0, u'name_en': ...
- java枚举与.net中的枚举区别
通过一段时间的项目实践,发现java中的枚举与.net中的枚举有很大的差别,初期造成了我对java中的枚举一些错误理解及部分有缺陷的应用,其实追其原因还是因为我会习惯性的认为java的枚举在作用以及定 ...
- JFreechart在linux下不显示及中文乱码问题
一.使用JFreeChart建的报表,在window下能正常显示,但是放到linux下就报错,而且有时候会把tomcat挂掉, 原因是jfreechart的在linux系统中需要访问java awt库 ...
- JQuery中Ajax的Post提交中文乱码的解决方案
出自:http://m.blog.csdn.net/blog/blueheart20/26370023 引言: 在JQuery的Ajax POST请求中,进行请求,其中的中文在后台,显示为乱码,该如何 ...
- C#中的枚举类型(enum type)
ylbtech 原文 C#中的枚举类型(enum type) 概念 枚举类型(enum type)是具有一组命名常量的独特的值类型.在以下示例中: enum Color { Red, Green, B ...
随机推荐
- 20145203盖泽双 《Java程序设计》第6周学习总结
20145203盖泽双 <Java程序设计>第6周学习总结 教材学习内容总结 1.如果要将数据从来源中取出,可以使用输入串流,若将数据写入目地, 可以使用输出串流.在java中,输入串流代 ...
- Java反射学习二
利用反射进行对象拷贝的例子 如下例程ReflectTester类进一步演示了Reflection API的基本使用方法. ReflectTester类有一个copy(Object object)方法, ...
- (一)U盘安装ubuntu18.04.1
我选择安装的ubuntu18.04.1因为我的显卡是Amd RX470 ,Amd官方所兼容的版本是18.04.1, 跳过的坑:用18.04.2 18.04.3 安装amdgpu驱动各种报错 0X:下载 ...
- js单图片上传
<form action="" id="form1"> <input type="file" name="hea ...
- STM32中EXTI和NVIC的关系
(1)NVIC(嵌套向量中断):NVIC是Cortex-M3核心的一部分,关于它的资料不在<STM32的技术参考手册>中,应查阅ARM公司的<Cortex-M3技术参考手册>C ...
- 树莓派3B+学习笔记:1、安装官方系统
1.登录树莓派官方网站www.raspberrypi.org,点击Downloads: 2.点击NOOBS: 3.选择下载方式,可以选择下载BT种子或直接下载,这里我用迅雷直接下载,下载速度还是很快的 ...
- Go压缩文件
Go压缩文件 首先是恭喜IG获得S8全球总决赛冠军,IG牛逼.但咱是一介草民,狂欢后,还是得老老实实的开始敲代码.最近做了一个给底层固件压缩加密的工具,是使用C#做的,已经提交出去可以正常使用的.既然 ...
- JavaWeb总结(十三)
Web开发模式的变迁 了解了Servlet和JSP,知道利用Servlet就可以开发一个Web应用程序,但是Servlet的缺陷使Web应用程序开发变得非常繁琐且不利于分工协作.使用JSP(表达式.声 ...
- 19-[模块]-xml
1.xml协议 xml是实现不同语言或程序之间进行数据交换的协议,跟json差不多,但json使用起来更简单,不过,古时候,在json还没诞生的黑暗年代,大家只能选择用xml呀,至今很多传统公司如金融 ...
- SpringCloud-微服务网关ZUUL(六)
前言:前面说过,由于微服务过多,可能某一个小业务就需要调各种微服务的接口,不可避免的就会需要负载均衡和反向代理了,以确保ui不直接与所有的微服务接口接触,所以我们需要使用一个组件来做分发,跨域等各种请 ...