73

我有一些在 ProjectA 中创建的用户控件。我有 ProjectB,它有一个我想放置控件的 Windows 窗体。这两个项目都在一个解决方案中。ProjectB 中有对 ProjectA 的引用,因此它可以“看到”用户控件。

但是,UserControls 没有显示在工具箱中让我拖动到 Windows 窗体。

我试过重建。我还删除了“bin”目录以强制全部重建。

如何让 VS2008 用我的 UserControls 填充工具箱?

4

29 回答 29

82

检查此设置:

工具 > 选项 > Windows 窗体设计器 > 常规:AutoToolboxPopulate

它应该设置为 True 才能正常工作。

于 2008-11-13T20:12:28.177 回答
33
  1. 构建您的项目以确保它可以编译。

  2. 使用您希望用户控制的表单,打开工具箱,右键单击并选择“选择项目”

  3. 浏览到您在步骤 1 中编译的 .exe 或 dll。

  4. 确保您的用户控件旁边有一个勾号,然后按 OK。

  5. 您的用户控件应该出现在工具箱中,因此将其拖到您的表单上。

这是改编自Calanus 对类似问题的回答

于 2009-11-24T20:14:17.823 回答
20

在我的例子中,AutoToolboxPopulate 已经设置好了(Visual C# 2010 Express)。

但是,我必须从工具箱的属性中激活“全部显示”(右键单击)才能真正看到我的新用户控件。

于 2010-07-22T03:06:46.107 回答
11

到目前为止,我没有在工具箱中显示用户控件的问题。构建项目,它就出现了。然后今天不上班了。经过搜索,我经历了以下但仍然没有快乐。

  • 工具 > 选项 > Windows 窗体设计器 > 常规:AutoToolboxPopulate
  • 工具 > 选项 > 文本编辑器 > XMAL > 杂项:AutoToolboxPopulate
  • 将 VS 设置重置为默认值

因此,经过几个小时试图让它工作但没有成功,我创建了一个新的 WPF windows 项目,接受默认名称并添加了一个用户控件。构建项目,用户控件像往常一样出现。

然后我认为我的项目或 wpf 窗口文件可能有问题。删除了项目,创建了一个新项目并添加了一个新控件。建立了项目,但它没有工作。

我唯一不同的是为项目选择了一个名称,我在名称“WPF Application”中包含了一个空格。

再次删除该项目并再次创建一个名为“WPFApplication”的新项目,没有空格并添加了一个用户控件。构建它并显示用户控件。

如果您希望用户控件在构建时自动显示在工具箱中,请不要在项目名称中使用空格。希望这篇文章可以节省其他人大量浪费的时间。

于 2010-12-05T08:31:40.637 回答
6

用户控件可能不会出现在工具箱中的另一个原因是它们没有默认构造函数。

于 2012-04-03T10:36:30.777 回答
5

还要仔细检查您的用户控件是否具有有效的命名空间。

我刚刚发现没有命名空间的控件没有放在工具箱中。

于 2009-03-23T08:44:07.557 回答
4

通常您需要构建解决方案。这几乎总是对我有用。

于 2008-11-13T20:00:36.517 回答
3

我有同样的问题。经过大量谷歌搜索后,我没有找到任何东西,但偶然我发现,如果您在创建用户控件的同一个项目中单击工具箱,然后选中“全部显示”,然后是一个组与您的项目同名的将出现在工具箱的顶部,您可以在其中找到您的用户控件。现在您可以在所需的表单上添加控件!

于 2011-11-21T08:18:03.703 回答
3

对于可能与之合作的人ToolStripItems(例如ToolStripStatusLabel),要真正让您的派生控件显示在下拉菜单中(例如来自 的那个StatusStrip),您需要设置类public然后构建解决方案。

也不要忘记你的类的设计器属性,如下所示:

using System.Windows.Forms.Design;

[ToolStripItemDesignerAvailability(ToolStripItemDesignerAvailability.StatusStrip)]
public class MyStatusLabel : ToolStripStatusLabel
{
}

我花了一段时间才把它弄好。希望这可以节省别人的时间。

于 2011-11-23T00:12:55.543 回答
3

我的控件是公开的,在“选择工具箱项”对话框中进行了检查,但仍然没有显示。

这最终对我有用:

右键单击工具箱中的某处,然后单击“选择项目”。当我找到我的物品时,它已经被检查过了。然后我取消选中该项目并单击确定。接下来我再次右键单击工具箱并搜索我的项目...它不见了,所以我单击浏览,导航到 obj/x86/debug 文件夹并选择我的 exe。然后将该项目正确添加到工具箱中。

我认为这是一个VS错误。

于 2013-01-10T20:36:39.853 回答
3

除了已经给出的所有说明(工具>选项> Windows窗体设计器>常规:AutoToolboxPopulate)+您需要构建解决方案(这对我来说很明显)您可能需要注意类访问修饰符:它必须是上市。我刚刚创建了一个控件并没有出现在工具箱列表中,我不知道为什么。所以设置后

public class  yourClass:control {}

比它出现在列表中。;) 希望这对其他人有所帮助。

于 2013-02-20T07:35:24.300 回答
2

检查您的构建输出目录。如果出于某种原因,您在项目 bin\ 目录以外的地方构建输出,则您的控件将不会显示在您的工具箱中。

于 2011-11-21T21:21:34.930 回答
2

这是我的问题:我为我的控件添加了一个新的构造函数,它接受了一些参数,但我没有明确地重新声明空构造函数!工具箱只能包含具有空构造函数的控件。一般来说,当你在 vb 中设计一个类时,它有一个隐式定义的空构造函数(意味着你不需要声明一个)。但是,一旦您开始设计自己的构造函数,这个空的构造函数就会消失,因此您需要在代码中明确地重新定义它!无论如何,我意识到最有经验的 vb 编码器已经知道这一切,但希望这可以帮助像我这样的新手:)。

于 2014-07-09T16:23:33.437 回答
1

我通常做的是创建一个新选项卡并将 exe/dll 添加到该选项卡...由于加载时间和一般麻烦,对该解决方案不太满意。

一位朋友向我展示了一种加快速度的方法。对于您创建的每个新控件,您不必在工具箱等中单击“选择项目...” - 您可以创建一个名为的文件MyCustomControls,然后您可以在其中创建自定义控件。

现在您只需执行“选择项目...”并添加此文件一次。如果您稍后决定添加新控件,请在其中创建它,MyCustomControls然后重新构建。
然后您的工具箱将拥有您的新控件。AutoToolboxPopulate(如果你有我认为它会在常规编译时自动显示)

这是不幸的,因为您经常希望将类分成“每个文件一个类”。仅仅因为 VS 不想按照你的方式去做,你就不得不毁掉你的代码架构,这太可怕了。:)

我对这个解决方案也不太满意,但如果你需要快速做一些事情并且你不关心文件中的多个用户控件或者只是懒惰,这可能很适合你。:)

于 2009-11-04T09:01:47.463 回答
1

以上所有方法都可能失败。

我通过创建一个新的用户控件 (TestControl) 来修复它,它触发 Visual Studio 神奇地将我的项目的控件选项卡 + 控件添加回工具箱。然后我只是删除了测试控件。

顺便说一句,这发生在我最近安装了 VS 2008 自动 Windows 更新之后。

于 2011-05-25T21:58:12.493 回答
1

好吧,除了这个有用之外,没有什么对我有用...

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

不是一个很好的解决方案,但您应该尝试这些步骤

  1. 看看它是否适用于全新的解决方案/项目。
  2. 看看它是否适用于同一解决方案中的全新项目
  3. 如果 #2 工作,也许比较 .csproj 文件......不知何故我的工作在我这样做的时候又开始工作了(这非常令人沮丧)。
于 2012-06-08T14:13:46.173 回答
1

如果您已经尝试过修补:

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

然而你仍然看到它是灰色的..

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

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

于 2012-06-09T19:31:23.997 回答
1

就在几个小时前,我陷入了这个陷阱。
我有一个带有一些自定义用户控件的 .NET 2.0 Windows 应用程序项目;它工作得很好。所以我决定把我的文件放在子文件夹中,让我的项目更干净一些。
之后,Visual Studio 2010 设计器停止加载我的表单,并且 ToolBox 不再显示我的控件。
我吓坏了,将源文件移回项目根目录,重置工具箱,但似乎没有任何效果。在那之后,我记得我使用了 ReSharper “删除未使用的引用”,所以我试图放回未使用的引用,特别是System.Data:问题解决了!:O 我不能说你为什么,但这对我有用。
希望我的经验可以帮助别人。:)
再见,南多

于 2012-07-03T14:56:13.450 回答
1

如果您仍然找不到为什么您的 vstudio 工具箱没有填充您的用户控件。然后你可以用另一个 Visual Studio 调试 vstudio。在这里你可以找到如何

于 2013-03-22T07:56:33.913 回答
1

如果您已尝试遵循所有其他答案,但它仍然无法正常工作,以下为我修复了它:

  • 右键单击包含控件的项目。
  • 选择Properties
  • Build设置类别中,确保Register for COM interop选中。
于 2013-08-09T17:09:52.110 回答
1

在我的情况下,错误的原因是我的控件的 .dll 路径的长度过长。我把它缩小了一点,一切都变得正常了。

我还发现路径中的特殊符号(例如我使用了#)会影响控件显示。

希望它能解决问题。

于 2013-10-22T09:47:08.253 回答
1

我试图构建一个仅限 x64 的应用程序,所以我的平台目标x64当然设置为。

但是,即使在 2016 年,Visual Studio ( devenv.exe) 仍然是 32 位进程,无法加载 64 位程序集。要检查 Visual Studio 的位数,请打开任务管理器并检查*32进程名称。

在工具箱中查看控件的解决方法:Any CPU在项目设置中将平台目标设置为。如有必要,对调试和发布版本执行此操作。

于 2016-07-14T19:16:26.513 回答
1

正如这里提到的,你应该告诉视觉工作室在工具箱中加载你的用户控件。

[ToolboxItem(true)]
public class PanelTitle : LabelControl  {
// Whatever code to override LabelControl here...
}
于 2016-12-18T07:46:52.170 回答
0

当我尝试将我的 UserControl 添加到工具箱(右键单击工具箱,选择项目,选择我的 DLL)时,它会显示一条消息,说明我的 DLL 中没有控件。

无论如何,通过尝试在 VS 中的 DLL 中创建一个表单并添加 UserControl,问题得到了解决。显示一条错误消息,指出没有默认构造函数

public UserControl() {
...
}

设计者需要这个,因为它不知道什么是有效参数。一旦我向 UserControl 添加了一个空白构造函数,它就会毫无问题地添加到工具箱中。

于 2013-01-29T01:18:14.873 回答
0

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

于 2014-02-27T08:35:36.110 回答
0

症状 1:Form、UserControl 和 Component的设计视图失败!

  • 我的表单设计视图因消息“找不到‘用户控件’而失败。”
  • 如果我能让表单设计视图正常工作,它会非常不稳定,并且会因任何更改而彻底损坏。

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

  • 在工具箱中显示为灰色并显示乱码
  • 工具箱上下文菜单中的“选择项目”显示乱码名称且没有命名空间

解决方案:在UserControl和Component后面的vb中设置范围为Public

于 2014-04-01T16:57:57.017 回答
0

检查项目路径,避免&#等。

我已经将我的解决方案从drive:\work\c#\folder\to移到了drive:\work\folder,它解决了这个问题。

于 2014-05-07T10:58:01.137 回答
0

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

我试图为 VS2008 上的 Windows CE 5.0 和 .Net Compact v3.5 项目的工具箱添加自定义控件。我做了所有以前的建议,但没有任何效果。当“显示全部”被选中时,控件显示出来,但它是灰色的,即使在“选择项目”菜单中也被选中。

我用 .Net v2.0 创建了一个新项目,它运行良好。

于 2017-01-26T18:52:22.013 回答
-1

你好,它的答案 Ctrl+Alt+X 拿这个,然后你有工具箱:)

于 2013-06-12T10:03:10.063 回答