这是与 How to bind a custom Enum description to a DataGrid 类似的问题,但就我而言,我有多个属性。
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
最佳答案
TypeConverter
通常可以完成这项工作;这是一些适用于 DataGridView
的代码 - 只需添加您的代码即可阅读描述(通过反射等 - 我现在只是使用了一个字符串前缀来显示自定义代码的工作)。
请注意,您可能也想覆盖 ConvertFrom
。转换器可以在类型 或 属性级别指定(如果您只希望它应用于某些属性),并且如果枚举不受您的控制,也可以在运行时应用。
using System.ComponentModel;
using System.Windows.Forms;
[TypeConverter(typeof(ExpectationResultConverter))]
public enum ExpectationResult
{
[Description("-")]
NoExpectation,
[Description("Passed")]
Pass,
[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# - 将枚举属性数据绑定(bind)到网格并显示描述,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1540103/