public enum ExpectationResult{ [Description("-")] NoExpectation,[Description("Passed")] Pass,[Description("Failed")] Fail}public class TestResult{ public string TestDescription { get; set; } public ExpectationResult requiredExpectationResult { get; set; } public ExpectationResult NonrequiredExpectationResult { get; set; }}
我绑定一个BindingList< TestResult>到WinForms DataGrIDVIEw(实际上是一个DevExpress.XtraGrID.GrIDControl,但一般的解决方案将更广泛地适用).我想要描述而不是枚举名称.我该如何做到这一点? (没有对类/枚举/属性的约束;我可以随意改变它们.)
解决方法 TypeConverter通常会做这个工作;这里有一些适用于DataGrIDVIEw的代码 – 只需添加代码来读取描述(通过反射等) – 我刚刚使用了一个字符串前缀来显示自定义代码的工作).注意你可能也想覆盖ConvertFrom.可以在类型或属性级别指定转换器(如果您只希望它适用于某些属性),并且还可以在运行时应用枚举不受您的控制.
using System.ComponentModel;using System.windows.Forms;[TypeConverter(typeof(ExpectationResultConverter))]public enum ExpectationResult{ [Description("-")] NoExpectation,[Description("Failed")] Fail}class ExpectationResultConverter : EnumConverter{ public ExpectationResultConverter() : base( typeof(ExpectationResult)) { } public overrIDe object ConvertTo(ITypeDescriptorContext context,System.Globalization.CultureInfo culture,object value,System.Type destinationType) { if (destinationType == typeof(string)) { return "abc " + value.ToString(); // your code here } return base.ConvertTo(context,culture,value,destinationType); }}public class TestResult{ public string TestDescription { get; set; } public ExpectationResult requiredExpectationResult { get; set; } public ExpectationResult NonrequiredExpectationResult { get; set; } static voID Main() { BindingList<TestResult> List = new BindingList<TestResult>(); DataGrIDVIEw grID = new DataGrIDVIEw(); grID.DataSource = List; Form form = new Form(); grID.Dock = DockStyle.Fill; form.Controls.Add(grID); Application.Run(form); }}总结
以上是内存溢出为你收集整理的c# – 数据绑定枚举属性到网格和显示描述全部内容,希望文章能够帮你解决c# – 数据绑定枚举属性到网格和显示描述所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)