2012-11-01 19 views
0

我有一個包含整數的各種值類型的屬性網格。一些int屬性具有DefaultValueAttribute,指定默認值,例如-1。Visual Studio Property Grid:接受Int屬性的空字符串

如果用戶輸入空字符串,Visual Studio會抱怨「屬性值無效;」無法轉換爲Int32「。無論如何,解釋一個空字符串作爲恢復到默認值?

我們有一個自定義的PropertyDescriptor實現,但在之後,SetValue()方法被稱爲VS將轉換爲對象值類型。

+1

這只是一個猜測 - 我還沒有嘗試過,我沒有研究過。嘗試使屬性'int?'。 – Bobson

+0

謝謝,這可能會工作,但我需要屬性是一個普通的(不可爲空)int ... –

回答

1

創建派生類Int32Converter並將其附加到您的財產。覆蓋它的ConvertFrom方法來插入你想要的行爲。理想情況下,您將使用DefaultAttribute設置爲PropertyDescriptor以使其可重用。

如果您想查看BaseNumberConverter.ConvertFrom如何完成,請使用反射器工具。

+0

正是我需要的 - 謝謝! –

+0

嗨@nicolas,上面的答案有點難理解,你有我可以看到的示例代碼 –