我有一些在 ProjectA 中创建的用户控件。我有 ProjectB,它有一个我想放置控件的 Windows 窗体。这两个项目都在一个解决方案中。ProjectB 中有对 ProjectA 的引用,因此它可以“看到”用户控件。
但是,UserControls 没有显示在工具箱中让我拖动到 Windows 窗体。
我试过重建。我还删除了“bin”目录以强制全部重建。
如何让 VS2008 用我的 UserControls 填充工具箱?
我有一些在 ProjectA 中创建的用户控件。我有 ProjectB,它有一个我想放置控件的 Windows 窗体。这两个项目都在一个解决方案中。ProjectB 中有对 ProjectA 的引用,因此它可以“看到”用户控件。
但是,UserControls 没有显示在工具箱中让我拖动到 Windows 窗体。
我试过重建。我还删除了“bin”目录以强制全部重建。
如何让 VS2008 用我的 UserControls 填充工具箱?
检查此设置:
工具 > 选项 > Windows 窗体设计器 > 常规:AutoToolboxPopulate
它应该设置为 True 才能正常工作。
构建您的项目以确保它可以编译。
使用您希望用户控制的表单,打开工具箱,右键单击并选择“选择项目”
浏览到您在步骤 1 中编译的 .exe 或 dll。
确保您的用户控件旁边有一个勾号,然后按 OK。
您的用户控件应该出现在工具箱中,因此将其拖到您的表单上。
这是改编自Calanus 对类似问题的回答。
在我的例子中,AutoToolboxPopulate 已经设置好了(Visual C# 2010 Express)。
但是,我必须从工具箱的属性中激活“全部显示”(右键单击)才能真正看到我的新用户控件。
到目前为止,我没有在工具箱中显示用户控件的问题。构建项目,它就出现了。然后今天不上班了。经过搜索,我经历了以下但仍然没有快乐。
因此,经过几个小时试图让它工作但没有成功,我创建了一个新的 WPF windows 项目,接受默认名称并添加了一个用户控件。构建项目,用户控件像往常一样出现。
然后我认为我的项目或 wpf 窗口文件可能有问题。删除了项目,创建了一个新项目并添加了一个新控件。建立了项目,但它没有工作。
我唯一不同的是为项目选择了一个名称,我在名称“WPF Application”中包含了一个空格。
再次删除该项目并再次创建一个名为“WPFApplication”的新项目,没有空格并添加了一个用户控件。构建它并显示用户控件。
如果您希望用户控件在构建时自动显示在工具箱中,请不要在项目名称中使用空格。希望这篇文章可以节省其他人大量浪费的时间。
用户控件可能不会出现在工具箱中的另一个原因是它们没有默认构造函数。
还要仔细检查您的用户控件是否具有有效的命名空间。
我刚刚发现没有命名空间的控件没有放在工具箱中。
通常您需要构建解决方案。这几乎总是对我有用。
我有同样的问题。经过大量谷歌搜索后,我没有找到任何东西,但偶然我发现,如果您在创建用户控件的同一个项目中单击工具箱,然后选中“全部显示”,然后是一个组与您的项目同名的将出现在工具箱的顶部,您可以在其中找到您的用户控件。现在您可以在所需的表单上添加控件!
对于可能与之合作的人ToolStripItems
(例如ToolStripStatusLabel
),要真正让您的派生控件显示在下拉菜单中(例如来自 的那个StatusStrip
),您需要设置类public
然后构建解决方案。
也不要忘记你的类的设计器属性,如下所示:
using System.Windows.Forms.Design;
[ToolStripItemDesignerAvailability(ToolStripItemDesignerAvailability.StatusStrip)]
public class MyStatusLabel : ToolStripStatusLabel
{
}
我花了一段时间才把它弄好。希望这可以节省别人的时间。
我的控件是公开的,在“选择工具箱项”对话框中进行了检查,但仍然没有显示。
这最终对我有用:
右键单击工具箱中的某处,然后单击“选择项目”。当我找到我的物品时,它已经被检查过了。然后我取消选中该项目并单击确定。接下来我再次右键单击工具箱并搜索我的项目...它不见了,所以我单击浏览,导航到 obj/x86/debug 文件夹并选择我的 exe。然后将该项目正确添加到工具箱中。
我认为这是一个VS错误。
除了已经给出的所有说明(工具>选项> Windows窗体设计器>常规:AutoToolboxPopulate)+您需要构建解决方案(这对我来说很明显)您可能需要注意类访问修饰符:它必须是上市。我刚刚创建了一个控件并没有出现在工具箱列表中,我不知道为什么。所以设置后
public class yourClass:control {}
比它出现在列表中。;) 希望这对其他人有所帮助。
检查您的构建输出目录。如果出于某种原因,您在项目 bin\ 目录以外的地方构建输出,则您的控件将不会显示在您的工具箱中。
这是我的问题:我为我的控件添加了一个新的构造函数,它接受了一些参数,但我没有明确地重新声明空构造函数!工具箱只能包含具有空构造函数的控件。一般来说,当你在 vb 中设计一个类时,它有一个隐式定义的空构造函数(意味着你不需要声明一个)。但是,一旦您开始设计自己的构造函数,这个空的构造函数就会消失,因此您需要在代码中明确地重新定义它!无论如何,我意识到最有经验的 vb 编码器已经知道这一切,但希望这可以帮助像我这样的新手:)。
我通常做的是创建一个新选项卡并将 exe/dll 添加到该选项卡...由于加载时间和一般麻烦,对该解决方案不太满意。
一位朋友向我展示了一种加快速度的方法。对于您创建的每个新控件,您不必在工具箱等中单击“选择项目...” - 您可以创建一个名为的文件MyCustomControls
,然后您可以在其中创建自定义控件。
现在您只需执行“选择项目...”并添加此文件一次。如果您稍后决定添加新控件,请在其中创建它,MyCustomControls
然后重新构建。
然后您的工具箱将拥有您的新控件。AutoToolboxPopulate
(如果你有我认为它会在常规编译时自动显示)
这是不幸的,因为您经常希望将类分成“每个文件一个类”。仅仅因为 VS 不想按照你的方式去做,你就不得不毁掉你的代码架构,这太可怕了。:)
我对这个解决方案也不太满意,但如果你需要快速做一些事情并且你不关心文件中的多个用户控件或者只是懒惰,这可能很适合你。:)
以上所有方法都可能失败。
我通过创建一个新的用户控件 (TestControl) 来修复它,它触发 Visual Studio 神奇地将我的项目的控件选项卡 + 控件添加回工具箱。然后我只是删除了测试控件。
顺便说一句,这发生在我最近安装了 VS 2008 自动 Windows 更新之后。
好吧,除了这个有用之外,没有什么对我有用...
不是一个很好的解决方案,但您应该尝试这些步骤
如果您已经尝试过修补:
然而你仍然看到它是灰色的..
检查您的路径长度并检查绝对路径中使用的字符。
我有一个位于“C:\Users\myName\myCompany\R&D\Projects”的项目
,几个小时后发现“R&D”是问题所在。
' & '不允许我的用户控件项目在我的工具箱。
就在几个小时前,我陷入了这个陷阱。
我有一个带有一些自定义用户控件的 .NET 2.0 Windows 应用程序项目;它工作得很好。所以我决定把我的文件放在子文件夹中,让我的项目更干净一些。
之后,Visual Studio 2010 设计器停止加载我的表单,并且 ToolBox 不再显示我的控件。
我吓坏了,将源文件移回项目根目录,重置工具箱,但似乎没有任何效果。在那之后,我记得我使用了 ReSharper “删除未使用的引用”,所以我试图放回未使用的引用,特别是System.Data:问题解决了!:O 我不能说你为什么,但这对我有用。
希望我的经验可以帮助别人。:)
再见,南多
如果您仍然找不到为什么您的 vstudio 工具箱没有填充您的用户控件。然后你可以用另一个 Visual Studio 调试 vstudio。在这里你可以找到如何。
如果您已尝试遵循所有其他答案,但它仍然无法正常工作,以下为我修复了它:
Properties
。Build
设置类别中,确保Register for COM interop
选中。在我的情况下,错误的原因是我的控件的 .dll 路径的长度过长。我把它缩小了一点,一切都变得正常了。
我还发现路径中的特殊符号(例如我使用了#)会影响控件显示。
希望它能解决问题。
我试图构建一个仅限 x64 的应用程序,所以我的平台目标x64
当然设置为。
但是,即使在 2016 年,Visual Studio ( devenv.exe
) 仍然是 32 位进程,无法加载 64 位程序集。要检查 Visual Studio 的位数,请打开任务管理器并检查*32
进程名称。
在工具箱中查看控件的解决方法:Any CPU
在项目设置中将平台目标设置为。如有必要,对调试和发布版本执行此操作。
正如这里提到的,你应该告诉视觉工作室在工具箱中加载你的用户控件。
[ToolboxItem(true)]
public class PanelTitle : LabelControl {
// Whatever code to override LabelControl here...
}
当我尝试将我的 UserControl 添加到工具箱(右键单击工具箱,选择项目,选择我的 DLL)时,它会显示一条消息,说明我的 DLL 中没有控件。
无论如何,通过尝试在 VS 中的 DLL 中创建一个表单并添加 UserControl,问题得到了解决。显示一条错误消息,指出没有默认构造函数
public UserControl() {
...
}
设计者需要这个,因为它不知道什么是有效参数。一旦我向 UserControl 添加了一个空白构造函数,它就会毫无问题地添加到工具箱中。
在您的 UserControl 中,确保将 New 声明为Public。如果它只是声明为 Sub New(默认为 Friend),它不会显示。
症状 1:Form、UserControl 和 Component的设计视图失败!
症状 2:工具箱中的用户控件和组件
解决方案:在UserControl和Component后面的vb中设置范围为Public
检查项目路径,避免&,#等。
我已经将我的解决方案从drive:\work\c#\folder\
to移到了drive:\work\folder
,它解决了这个问题。
在尝试添加自定义控件之前,请确保它与当前项目的 .Net 版本兼容。
我试图为 VS2008 上的 Windows CE 5.0 和 .Net Compact v3.5 项目的工具箱添加自定义控件。我做了所有以前的建议,但没有任何效果。当“显示全部”被选中时,控件显示出来,但它是灰色的,即使在“选择项目”菜单中也被选中。
我用 .Net v2.0 创建了一个新项目,它运行良好。
你好,它的答案 Ctrl+Alt+X 拿这个,然后你有工具箱:)