2013-09-26 28 views
0

我正在使用包含自定義編輯器的VB.Net爲VS 2010創建Visual Studio包。編輯器在ListView中提供了很多項目。我希望選中的項目(其父項和任何子項目)出現在PropertyGrid面板對象列表中以允許進行屬性編輯。我有這個工作。通常情況下,可選項目的下拉列表顯示,其中項目的名稱爲粗體文本,後跟該對象的類型名稱。在我的軟件包中,我無法顯示粗體名稱,只有類型名稱。用於Visual Studio的IProvideClassInfo用於屬性面板的AddIn爲

http://msdn.microsoft.com/en-us/library/vstudio/bb165752(v=vs.100).aspx

這頁是我能找到的對象列表命名對象的信息的唯一作品。在鏈接狀態中,我在VS中給出的對象中實現了IProvideClassInfo以顯示在列表中,但GetClassInfo方法從不調用,並且不顯示任何名稱。每個對象還有一個名爲「Name」的公共屬性,以防萬一。它沒。

誰能告訴我我做錯了什麼?

+0

你在用什麼語言? –

+0

非常含糊。如果這是一個.NET對象而不是COM對象,那麼你需要一個TypeConverter來定製它的顯示方式。 –

+0

好吧,我可以找到涉及TypeConverters的所有內容都與此無關。因爲COM對象的事情,我以爲你在做某件事。 obj.GetType()。isCOMObject在我的所有對象上返回false,我不確定如何在VB.net中創建一個實際上是COM對象的對象。微軟有一篇關於它的文章,但它有一個說明他們不是「真正的」COM對象,所以我仍然對這件事情感到失望。看來以前沒有人這樣做過。 VS 2010 SP1 SDK附帶的默認模板不能正確執行此操作。 – syko9000

回答

1

在MSDN上搜索論壇我終於找到有人回答這個問題。

IProvideClassInfo與此無關,就像我給州的鏈接一樣。正確的答案是在對象中實現ICustomTypeDescriptor接口。大部分函數實現都涉及返回TypeDescriptor對象上相同函數調用的結果(共享/靜態函數)。 GetComponentName結果將成爲下拉的粗體部分。 GetClassName結果將是非粗體部分。我不確定GetEditor函數的作用,但返回TypeDescriptor.GetEditor結果導致無限循環,返回Nothing/null似乎工作。

我創造了我所有的對象將進入屬性面板的下降基類向下實現所有地方GetClassName返回Me.GetType()。名稱和GetComponentName返回Me.ToString()

它的功能效果很好。

相關問題