2010-11-19 164 views
1

我有一個類MinMax其中除其他外包含此:編輯自定義類型

public class MinMax 
{ 
    private float m_min = 0; 
    private float m_max = 1; 
    public override string ToString() 
    { 
     return m_min + " " + m_max; 
    } 
} 

我也有另一個類SomeClass這種類型的屬性:

public MinMax Something 
{ 
    get 
    { 
     return m_something; 
    } 
    set 
    { 
     m_something = value; 
    } 
} 

當我將一個SomeClass類型的對象放在屬性網格中,Something已正確顯示,但由於自然原因,我無法編輯該值。

我知道我可以創建自定義類型編輯器並顯示自定義窗體來編輯它,但我想直接編輯顯示的字符串。

我的第一個解決方案是從Something返回一個string,但我有其他代碼需要此屬性以本機格式返回。

是thera任何其他方便的解決方案,將讓med直接在propertygrid中作爲字符串編輯值?

回答

3

也許你正在尋找一個自定義UITypeEditor
http://msdn.microsoft.com/en-us/library/ms171840.aspx

出於完整性看看也TypeConverter
可以用於允許簡單的編輯(例如,從到字符串),而不需要自定義UITypeEditor的:
http://msdn.microsoft.com/en-us/library/ayybcxe5.aspx

+0

它看起來像一個類型轉換器是我需要的,如果我創建一個類型轉換器'MinMaxConverter'它可以將字符串轉換爲一個'MinMax'並添加像'[TypeCo nverter(typeof(MinMaxConverter))]''我的''東西'屬性會自動工作? – 2010-11-19 09:04:27

+0

工作完美! – 2010-11-19 09:14:49

+0

抱歉,對於遲到的回覆...是的,當然你也可以只使用'TypeConverter',但如果你需要更復雜的編輯(例如,如果字符串不夠用),「UITypeEditor」完全適合。 – digEmAll 2010-11-19 09:21:04