我在我的项目中添加了属性网格控件。 我需要在属性网格的一个字段中显示下拉框。 是否有解决方案可以应用此功能。
我在我的项目中添加了属性网格控件。 我需要在属性网格的一个字段中显示下拉框。 是否有解决方案可以应用此功能。
PropertyGrid
中声明属性编辑器,然后将其添加到选择列表中。此示例创建了一个类型转换器,然后覆盖了GetStandardValues()
方法以向下拉菜单提供选项:private String _formatString = null;
[Category("Display")]
[DisplayName("Format String")]
[Description("Format string governing display of data values.")]
[DefaultValue("")]
[TypeConverter(typeof(FormatStringConverter))]
public String FormatString { get { return _formatString; } set { _formatString = value; } }
public class FormatStringConverter : StringConverter
{
public override Boolean GetStandardValuesSupported(ITypeDescriptorContext context) { return true; }
public override Boolean GetStandardValuesExclusive(ITypeDescriptorContext context) { return true; }
public override TypeConverter.StandardValuesCollection GetStandardValues(ITypeDescriptorContext context)
{
List<String> list = new List<String>();
list.Add("");
list.Add("Currency");
list.Add("Scientific Notation");
list.Add("General Number");
list.Add("Number");
list.Add("Percent");
list.Add("Time");
list.Add("Date");
return new StandardValuesCollection(list);
}
}
关键是在这行代码中给属性分配了一个类型转换器:
[TypeConverter(typeof(FormatStringConverter))]
这为你提供了通过覆盖方法来引入自己的行为的机会。
以下是一个更简单的示例,它允许属性的 Enum 类型自动将其值提供给 PropertyGrid
下拉列表:
public enum SummaryOptions
{
Sum = 1,
Avg,
Max,
Min,
Count,
Formula,
GMean,
StdDev
}
private SummaryOptions _sumType = SummaryOptions.Sum;
[Category("Summary Values Type")]
[DisplayName("Summary Type")]
[Description("The summary option to be used in calculating each value.")]
[DefaultValue(SummaryOptions.Sum)]
public SummaryOptions SumType { get { return _sumType; } set { _sumType = value; } }
由于该属性是枚举类型,这些枚举值将自动传递并成为下拉选项。
FormatStringConverter
? - mrid
GridView
中使用Template Field
和ItemTemplate
。 - Ullas