2008-09-22 48 views
1

我有一个属性网格在C#中,加载了一个“PropertyAdapter中”对象(我的对象与适当的标签显示相关属性的围绕着一个基本的包装)属性网格对象未能在组合框中选择,但确定,当组合框滚动或双点击

我对属性中的一个(数据类型,即返回的可能值的枚举的TypeConverter,),为我想限制提供给属性网格为十进制和整数的值,与所述2种方法如下

public override bool GetStandardValuesSupported(ITypeDescriptorContext context) 
{ 
    return true; 
} 

public override StandardValuesCollection GetStandardValues(ITypeDescriptorContext context) 
{ 
    return new StandardValuesCollection(new List<Constants.DataTypes>() { Constants.DataTypes.Decimal, Constants.DataTypes.Integer }); 
} 

这显示只是因为我想它的属性网格,当我双击属性网格中的属性字段,它可以在Integer和Decimal之间快速切换。类似地,我可以使用鼠标滚轮来滚动属性字段组合框中的选项。

如果我不过使用属性字段作为组合框,然后从下拉列表中值,我得到的标准属性网格错误框出现错误:

Object of type 'System.String' cannot be converted to type 'Pelion.PM3.Utils.Constants+DataTypes'.

我假设我可以使用转换器覆盖在类型转换器中以捕获这些数据并将它们转换为DataType的Enum,但为什么当我从下拉列表中选择而不是双击或下拉菜单中的“mouseewheeling”时,属性网格会失败?

回答

3

从组合框下拉列表中选择时,该值以字符串形式返回。我不确定这是为什么,但我以前见过。我认为基本上双击或滚动鼠标滚轮会从值集合中更改值,而从下拉列表中进行选择就像将字段值编辑为字符串一样。然后,您将字符串的值转换为枚举值。