工具箱中未显示用户控件

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

但是,UserControls 并没有出现在工具箱中,以便我拖动到窗口窗体。

我已经尝试重建。我还删除了“ bin”目录以强制重建-all。

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

104497 次浏览

通常你需要构建解决方案,这对我来说几乎总是管用的。

检查这个设置:

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

它应该被设置为 True,这样才能正常工作。

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

我刚刚发现没有名称空间的控件没有放在 ToolBox 中。

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

一个朋友告诉了我一个加快速度的方法。不必在工具箱中点击“选择项目...”等,对于每个新的控件,您可以创建一个名为 MyCustomControls的文件,在那里您可以创建您的自定义控件。

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

这是不幸的,因为通常您希望将类分隔为“每个文件一个类”。仅仅因为 VS 不想按照您的方式来做,您就不得不破坏您的代码体系结构,这是非常可怕的。:)

我对这个解决方案也不太满意,但是如果您需要快速完成某些操作,并且您不关心文件中的多个用户控件或者只是懒惰,那么这个解决方案可能非常适合您。:)

  1. 生成项目以确保它已编译。

  2. 对于希望用户控制的窗体,打开工具箱,右键单击并选择“选择项”

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

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

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

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

在我的示例中,已经设置了 AutoToolboxPopular (VisualC # 2010Express)。

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

到目前为止,我没有问题的用户控件没有显示在工具箱中。建立这个项目,它就会出现。那今天就不行了。经过一番搜寻,我继续跟进,但仍然没有找到乐趣。

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

因此,在花了几个小时试图让它工作却没有成功之后,我创建了一个接受默认名称的新 WPF 窗口项目,并添加了一个用户控件。 构建项目并显示用户控件,一如既往。

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

我做的唯一不同的事情是为项目选择了一个名称,我在名称“ WPF 应用程序”中包含了一个空格。

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

如果希望用户控件在生成时自动显示在工具箱中,请不要在项目名称中使用空格。希望这篇文章节省了别人大量的时间。

所有这些都有可能失败。

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

顺便说一下,这是我最近安装了 VS2008自动窗口更新之后发生的事情。

我也有同样的问题。经过大量的谷歌搜索,我没有找到任何东西,但偶然间我发现,如果你点击工具箱,而你在同一个项目中,你已经创建了用户控件,并选择“ 展示一切”,然后一个组与你的项目同名,将出现在工具箱的顶部,你可以找到你的用户控件。 现在可以在所需的窗体上添加控件了!

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

对于那些可能使用 ToolStripItems(例如 ToolStripStatusLabel)的人来说,要实际让你的派生控件显示在下拉菜单中(例如来自 StatusStrip的那个) ,您需要将类设置为 public然后构建解决方案。

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

using System.Windows.Forms.Design;


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

我花了不少时间才做好,希望这能帮别人节省点时间。

用户控件不显示在工具箱中的另一个原因是它们没有缺省构造函数。

对我来说没什么有用的,除了这个。

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

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

  1. 看看它是否适用于全新的解决方案/项目。
  2. 查看它是否在同一解决方案中的全新项目中工作
  3. 如果 # 2工作,也许比较。 csproj 文件... 不知何故,我开始工作,而我正在这样做(这是非常令人沮丧的)。

前提是你已经尝试过修补:

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

但你仍然看到它变成了灰色。

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

我有一个项目居住在“ C: 用户我的名称我的公司研发项目”
几个小时后发现 “ R & D”是个问题。
& ”不允许在我的工具箱中启用我的用户控制项。

我几个小时前掉进了这个陷阱。
我有一个。NET 2.0 Windows 应用程序项目和一些自定义的用户控件; 它工作得很好。所以我决定把我的文件放在子文件夹中,使我的项目更干净一点。
此后,VisualStudio2010设计器停止加载我的窗体,并且 ToolBox 将不再显示我的控件。
我吓坏了,把源文件移回到项目根目录,重置 ToolBox,但似乎什么都没用。之后,我记得我使用 ReSharper“删除未使用的引用”,所以我尝试 放回未使用的参考书,特别是 系统,数据: 问题解决!校对: O 我不能告诉你为什么,但这对我很有用。
希望我的经验能帮到别人。 :)
再见 Nando

我的控件是公共的,它在“选择工具箱项”对话框中被选中,但仍然没有显示出来。

这就是最终对我奏效的方法:

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

我觉得是 VS 漏洞。

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

无论如何,这个问题已经被解决了,通过尝试在 VS 中在我的 DLL 中创建一个表单并添加 UserControl。显示了一条错误信息,说明没有缺省构造函数

public UserControl() {
...
}

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

除了已经给出的所有指令(工具 > 选项 > Windows 窗体设计器 > 常规: AutoToolboxPopular) + 你需要构建解决方案(这对我来说是显而易见的) ,你可能需要注意类访问修饰符: 它必须是 PUBLIC。 我只是创建了一个控件,并没有出现在工具箱列表中,我不知道为什么。拍完之后

public class  yourClass:control {}

比列表中显示的要多。 ;) 希望这能帮到别人。

如果您仍然不能找到为什么您的 vStudio 工具箱没有填充您的用户控件。然后您可以使用另一个视觉工作室来调试 vStudio。在这里你可以找到如何.

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

如果你已经尝试了所有其他的答案,它 还是不工作,以下为我修复它:

  • 右键单击包含控件的项目。
  • 选择 Properties
  • Build设置类别中,确保选中了 Register for COM interop

在我的例子中,错误的原因是路径超出了我的控件的长度。DLL.我把它缩小了一点,一切都变得很正常。

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

希望这能解决问题。

在 UserControl 中,确保 New 被声明为 公众人士。如果只是声明了 Sub New (默认为 Friend) ,它就不会显示。

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

  • 我的表单设计视图在“无法找到‘用户控制’”下失败
  • 如果我可以得到的形式设计视图的工作,它是非常不稳定和腐败的所有地狱/任何变化。

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

  • 在工具箱中显示为灰色,并显示一个混乱的名称
  • “选择项目”在工具箱上下文菜单显示混乱的名称和没有名称空间

解决方案: 在 UserControl & Component 后面的 vb 中将范围设置为 公众人士

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

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

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

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

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

解决方案,以查看工具箱中的控件: 在项目设置中将平台目标设置为 Any CPU。如果需要,可以对 Debug 和 Releasebuild 执行此操作。

正如前面提到的 给你,您应该告诉 Visual Studio 在工具箱中加载您的用户控件。

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

在尝试添加自定义控件之前,请确保该控件与。当前项目的网络版本。

我试图为 Windows CE 5.0和 Windows CE 5.0项目的工具箱添加一个自定义控件。Net Compactv3.5 on VS2008. 我做了所有以前的建议,但没有工作。当“全部显示”选中但是它是灰色的时候,即使在“选择项”菜单中也会显示该控件。

我用.Net v2.0创建了一个新项目,它工作得很好。