Winforms C# - 遗留项目 Visual .NET 2003:工具箱中未显示自定义扩展程序提供程序

Winforms C# - Legacy Project Visual .NET 2003: Custom Extender Provider not shown in Toolbox

我已经创建了一个自定义的 Extender Provider 以应用于我的所有标签:class 继承自 Component 并实现了 IExtenderProvider。

编译正确,没有错误。然后我转到工具箱,但它没有显示。

我重启了VS,还是不行。 此外,我在另一个单独的程序集中创建了这个扩展程序提供程序 class,编译它,然后添加了对另一个程序集的引用,我想按照解释 here 使用它,但没有成功,它说:

the class needs to be packaged into a separate assembly from the assembly using it.

有什么想法吗?

最后我按照以下步骤解决了:

  1. 在一个单独的程序集(与您使用它的地方不同)中,一个 class 库项目,创建一个 class 并在那里实现您的扩展程序提供程序。使这个 class 继承自 System.ComponentModel.Component 并实现 IExtenderProvider。
  2. 实现后,编译它。您将获得您的dll。
  3. 在您使用它的程序集中添加一个指向 class 包含您的扩展程序提供程序的库的引用。
  4. 要在工具箱中显示您的扩展器提供程序,请单击鼠标右键并在上下文菜单中 select "Add/Remove Items...",将显示自定义工具箱对话框 window。
  5. 在“自定义工具箱”对话框中 window 您将看到两个选项卡“.Net Framework 组件”和 "COM Components"。在“.Net Framework Components”中单击浏览按钮并导航到您的 dll(class 包含您的扩展程序提供程序的库)所在的位置和 select 它。
  6. 在那之后,您会立即看到您的扩展程序提供程序出现在“.Net Framework Components”中,select 并确保它被选中,然后单击 'OK' 按钮。就是这样,现在您的扩展器提供程序将显示在 "Components" 组下的工具箱中。
  7. 现在,从要插入扩展程序提供程序的程序集中打开一个 winform(在设计视图中),然后将扩展程序提供程序拖放到窗体中。
  8. Select 您表单的一个对象,您的扩展程序提供程序是为其创建的,然后转到它的属性,在那里您将看到在您的扩展程序提供程序中为该组件实现的新属性。如果您没有在扩展程序提供程序 属性 中指定类别属性,它将显示在属性 window.
  9. 的 "Misc" 类别下

就这些了。

似乎在旧版本的 Visual Studio 中,如 Visual .NET 2003,扩展器提供程序不会自动添加到工具箱中,您必须手动添加。在 Visual Studio 的较新版本中,例如 2015(我已经测试过),它会自动为您完成。