用于Visual Studio的IProvideClassInfo为属性面板添加

时间:2013-09-26 23:51:11

标签: visual-studio propertygrid visual-studio-addins

我正在使用包含自定义编辑器的VB.Net为VS 2010创建Visual Studio包。编辑器在ListViews中显示了许多项目。我希望选中的项目(其父项和任何子项)出现在PropertyGrid面板对象列表中以允许属性编辑。我有这个工作。通常,可选项的下拉列表显示为带有粗体文本的项目名称,后跟该对象的类型名称。在我的包中,我无法显示粗体名称,只显示类型名称。

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

此页面是我在命名对象列表中的对象时可以找到的唯一信息。正如链接所述,我在我给VS的对象中实现了IProvideClassInfo以显示在列表中但是从不调用GetClassInfo方法并且不显示任何名称。每个对象也有一个名为“Name”的公共属性,以防万一有效。它没有。

谁能告诉我我做错了什么?

1 个答案:

答案 0 :(得分:1)

在MSDN上搜索论坛我终于找到了回答这个问题的人。

IProvideClassInfo与此无关,就像我给出的链接一样。正确的答案是在对象中实现ICustomTypeDescriptor接口。大多数函数实现涉及在TypeDescriptor对象(共享/静态函数)上返回相同函数调用的结果。 GetComponentName结果将是下拉列表的粗体部分。 GetClassName结果将是非粗体部分。我不确定GetEditor函数的作用但是返回TypeDescriptor.GetEditor结果会导致无限循环,返回Nothing / null似乎有效。

我为所有对象创建了一个基类,它将进入Property面板的下拉列表,实现GetClassName返回Me.GetType()的所有函数.Name和GetComponentName返回Me.ToString()

效果很好。