2008-09-22 47 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

從組合框下拉列表中選擇時,該值以字符串形式返回。我不確定這是爲什麼,但我以前見過。我認爲基本上雙擊或滾動鼠標滾輪會從值集合中更改值,而從下拉列表中進行選擇就像將字段值編輯爲字符串一樣。然後,您將字符串的值轉換爲枚舉值。