用户控件未显示在工具箱中

73
我有一些在ProjectA中创建的UserControls。我想将这些控件放在ProjectB的窗体上。这两个项目在同一个解决方案中,并且ProjectB引用了ProjectA,所以可以“看到”UserControls。
然而,这些UserControls并没有显示在工具箱中,因此无法将其拖入窗体中。
我已经尝试了重建,也删除了“bin”目录以强制重新构建。
如何让VS2008在工具箱中显示我的UserControls?

5
在我的用户控件中,有一个类型参数,即MyControl<T>,这意味着VS不会在工具箱中显示该控件。一旦我去掉了类型参数,一切都自动正常工作了。 - liwp
29个回答

1

嗯,除了这个方法,其他的都没用...

  1. 我在我的解决方案中创建了一个新项目,对于这个项目它是有效的,所以我打算开始使用这个
  2. 玩弄一下,我开始调整csproj文件的xml,以找出同一解决方案中我的其他项目有什么问题,然后我将其重置,因为它似乎没有起作用
  3. 现在它在我的项目中神奇地再次工作了

虽然不是很好的解决方案,但你应该尝试以下步骤

  1. 看看它是否在全新的解决方案/项目中有效。
  2. 看看它是否在同一解决方案中的全新项目中有效。
  3. 如果第2步有效,也许可以比较.csproj文件...在我这样做的时候,我的文件又开始工作了(这真的很令人沮丧)。

1

如果您已经尝试过以下操作:

  • 工具 > 选项 > Windows 窗体设计器 > 常规:AutoToolboxPopulate
  • 工具 > 选项 > 文本编辑器 > XMAL > 其他:AutoToolboxPopulate
  • 创建默认构造函数
  • 构建您的项目/重置工具箱并手动添加选项卡

但仍然看到它变灰了...

检查您的路径长度和检查绝对路径中使用的字符

我有一个位于 "C:\Users\myName\myCompany\R&D\Projects" 的项目
几个小时后发现 "R&D" 是问题所在..
"&" 不允许我的用户控件项目在工具箱中启用。


1

此处所述,您需要告诉Visual Studio将您的用户控件加载到工具箱中。

[ToolboxItem(true)]
public class PanelTitle : LabelControl  {
// Whatever code to override LabelControl here...
}

0

在尝试添加自定义控件之前,请确保它与当前项目的 .Net 版本兼容。

我试图将一个自定义控件添加到一个使用 Windows CE 5.0 和 .Net Compact v3.5 的项目的工具箱中,使用的是 VS2008。 我尝试了所有之前的建议,但没有任何效果。当选中“显示全部”时该控件会显示出来,但是变灰了,即使在“选择项”菜单中也是如此。

我创建了一个使用 .Net v2.0 的新项目,它完美地工作了。


0

症状1:表单、用户控件和组件的设计视图失败了!

  • 我的表单设计视图显示“找不到‘用户控件’”。
  • 如果我能让表单设计视图工作,它也非常不稳定,并且在任何更改时都会损坏。

症状2: 工具箱 中的用户控件和组件

  • 工具箱中的用户控件和组件显示为灰色并带有乱码名称
  • 工具箱上下文菜单中的“选择项目”显示为乱码名称和无命名空间

解决方案:在用户控件和组件后面的 vb 中将范围设置为 公共


0

检查项目路径,避免使用&#等特殊字符。

我将我的解决方案从drive:\work\c#\folder\移动到drive:\work\folder,问题得到了解决。


0
在您的UserControl中,请确保New被声明为Public。如果只声明为Sub New(默认为Friend),它将不会显示出来。

0
当我试图将我的UserControl添加到工具箱中(右键单击工具箱,选择项目,选择我的DLL),它会显示一个消息,指出我的DLL中没有控件。
无论如何,问题已经通过尝试在我的DLL中创建一个窗体并添加UserControl来解决。一个错误消息显示说没有默认构造函数。
public UserControl() {
...
}

设计师需要这个是因为它无法知道哪些参数是有效的。一旦我向UserControl添加了一个空构造函数,它就可以毫无问题地添加到工具箱中了。

-1

你好,这是答案:按下Ctrl+Alt+X,然后你就会有工具箱啦 :)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接