PropertyGrid中的枚举显示为中文

在使用PropertyGrid展示对象属性时,枚举默认显示值可能让用户困惑。本文探讨如何在PropertyGrid中让枚举显示中文,通过TypeConverter实现统一转换,避免影响分层架构。示例展示了如何定义带有描述信息的枚举、自定义TypeConverter以及在属性中应用,以达成友好的枚举显示效果。
摘要由CSDN通过智能技术生成

PropertyGrid中的枚举显示为中文

在系统开发中,经常会使用PropertyGrid来修改或者展示某个对象的属性,如果类中定义了枚举,在展现的时候默认会展示枚举的项或者枚举值,但是这并不是我们想要的。用户使用的时候并不清楚该项代表的意思。之前介绍过枚举显示中文的一篇文章,大家可以看下,枚举显示中文

效果如下图:

 

在PropertyGrid中枚举显示中,又比较复杂一些。PropertyGrid显示复杂属性需要TypeConverter,也就是一个转换器,可以对其进行设置,显示我们想要的格式、内容。现有技术PropertyGrid枚举显示中文,有一些利用了绑定自定义控件,有一些绑定自定义的IList对象。但是,每个枚举都要建立自己的TypeConverter,如果在架构设计中,一般都是分层实现,这样的横跨直接影响了分层结构,破坏系统的原本。有没有一种更好的办法来实现呢?本文也就这一问题进行了研究。

本文的实现原理:

在TypeConverter中对枚举类型进行转换,但是这个TypeConverter针对的所有的枚举对象,所有的枚举转换器都可以采用此接口,在枚举显示的时候调用TypeConverter,通过反射获得相对应的枚举描述。这样所有的枚举就只定义一个TypeConverter。也就解决上述问题。

具体事例:

1、定义枚举:在枚举中加入描述信息,作为我们需要显示的信息

    public enum PKGenerator
    {
        /// <summary>
        /// 根据主键类型自动生成主键
        /// </summary>
        [Description("自动生成")]
        AutoGenerate=0,
        /// <summary>
        /// 自定义主键
        /// </summary>
        [Description("自定义")]
        User_Defined =1,
        /// <summary>
        /// 由外面传入
        /// </summary>
        [Description("外部传入")]
        Outer =2
    }
}


2、定义TypeConverter,对枚举和选择进行转换

    /// <summary>
    /// 枚举转换器
    /// 用此类之前,必须保证在枚举项中定义了Description
    /// </summary>
    public class EnumConverter : ExpandableObjectConverter
    {
        /// <summary>
        /// 枚举项集合
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值