自定义显示enum名称
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Globalization;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
// https://stackoverflow.com/questions/7422685/edit-the-display-name-of-enumeration-members-in-a-propertygrid
// https://www.codeproject.com/articles/28087/displaynameattribute-for-enumerations
namespace PropertyGridShowEnumCustomName
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
propertyGrid1.SelectedObject = new Foo();
}
}
public class Foo
{
[TypeConverter(typeof(FooTypeConverter))]
public FooType Type { get; set; }
}
public enum FooType
{
A,
B,
C,
D,
}
public class FooTypeConverter : EnumConverter
{
private Type enumType;
public FooTypeConverter(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)
{
switch ((FooType)value)
{
case FooType.A:
return "甲";
case FooType.B:
return "乙";
case FooType.C:
return "丙";
case FooType.D:
return "丁";
}
return "";
}
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 dna = (DescriptionAttribute)Attribute.GetCustomAttribute(fi,
// typeof(DescriptionAttribute));
// if ((dna != null) && ((string)value == dna.Description))
// return Enum.Parse(enumType, fi.Name);
//}
//return Enum.Parse(enumType, (string)value);
switch ((string)value)
{
case "甲":
return FooType.A;
case "乙":
return FooType.B;
case "丙":
return FooType.C;
case "丁":
return FooType.D;
}
return FooType.A;
}
}
}
posted on 2022-04-01 13:45 OctoberKey 阅读(35) 评论(0) 收藏 举报
浙公网安备 33010602011771号