/// <summary> 绑定枚举的Desc特性名称 </summary> public static void BindEnumItemShowDesc <T>(this ComboBox cmb) where T : struct, IComparable { // 是枚举 if (typeof(T).IsEnum) { List <string> objs = new List <string>(); FieldInfo[] files = typeof(T).GetFields(); List <EnumDisplayModel> models = new List <EnumDisplayModel>(); foreach (var v in files) { EnumDisplayModel model = new EnumDisplayModel(); model.Field = v; DescriptionAttribute r = v.GetCustomAttribute <DescriptionAttribute>(); if (r != null) { model.Description = r.Description; models.Add(model); } } cmb.DataSource = models; cmb.DisplayMember = "Description"; } }
/// <summary> 获取选中的枚举值 </summary> public static T GetEnumItemByDesc <T>(this ComboBox cmb) where T : struct, IComparable { EnumDisplayModel model = cmb.SelectedItem as EnumDisplayModel; T testenum = (T)Enum.Parse(typeof(T), model.Field.Name, false); return(testenum); }