1

我正在使用包含自定义编辑器的 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”的公共属性,以防万一。它没。

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

4

1 回答 1

2

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

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

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

它工作得很好。

于 2013-10-02T02:04:38.520 回答