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

时间:2008-11-13 19:58:13

标签: visual-studio-2008 user-controls toolbox

我有一些我在ProjectA中创建的UserControl。我有一个ProjectB,它有一个我想要控件的窗体。这两个项目都在一个解决方案中。从ProjectB引用了ProjectA,因此它可以“看到”UserControls。

但是,UserControls不会显示在工具箱中,以便我拖动到Windows窗体。

我尝试过重建。我还删除了'bin'目录以强制重建所有。

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

29 个答案:

答案 0 :(得分:80)

检查此设置:

工具>选项> Windows窗体设计器>一般:AutoToolboxPopulate

应将其设置为True以使其正常工作。

答案 1 :(得分:31)

  1. 构建项目以确保其编译。

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

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

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

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

  6. 这改编自Calanus's answer to a similar question

答案 2 :(得分:19)

就我而言,已经设置了AutoToolboxPopulate(Visual C#2010 Express)。

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

答案 3 :(得分:11)

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

  • 工具>选项> Windows窗体设计器>一般:AutoToolboxPopulate
  • 工具>选项>文本编辑器> XMAL>其他:AutoToolboxPopulate
  • 将VS设置重置为默认值

因此,经过几个小时的努力,试图让它工作没有成功,我创建了一个新的WPF Windows项目接受默认名称并添加了一个usercontrol。 构建项目并且用户控件一如既往地出现。

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

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

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

如果您希望在构建时在工具箱中自动显示usercontrol,请不要在项目名称中使用空格。希望这篇文章能为其他人节省大量时间。

答案 4 :(得分:6)

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

答案 5 :(得分:5)

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

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

答案 6 :(得分:4)

通常您需要构建解决方案。这几乎总是适合我。

答案 7 :(得分:3)

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

之后
public class  yourClass:control {}

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

答案 8 :(得分:3)

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

这最终对我有用:

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

我认为这是一个VS错误。

答案 9 :(得分:3)

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

另外,请不要忘记您班级的设计师属性,如下所示:

using System.Windows.Forms.Design;

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

我花了一些时间才弄清楚。希望这可以节省别人的时间。

答案 10 :(得分:3)

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

答案 11 :(得分:2)

检查构建输出目录。如果出于某种原因,您正在将项目bin \目录以外的其他位置构建输出,那么您的控件将不会显示在工具箱中。

答案 12 :(得分:2)

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

答案 13 :(得分:1)

如果您已尝试按照所有其他答案并且仍然无法正常工作,则以下修复此问题:

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

答案 14 :(得分:1)

如果您仍然无法找到为什么您的vstudio工具箱没有填充您的usercontrols。然后你可以用另一个visual studio调试vstudio。 Here you can find how

答案 15 :(得分:1)

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

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

希望它能解决问题。

答案 16 :(得分:1)

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

答案 17 :(得分:1)

假设您已经尝试过修改:

  • 工具>选项> Windows窗体设计器>一般:AutoToolboxPopulate
  • 工具>选项>文本编辑器> XMAL>其他:AutoToolboxPopulate
  • 创建了默认构造函数
  • 构建项目/重置工具箱并手动添加标签

然而你仍然看到它变得灰暗。

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

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

答案 18 :(得分:1)

嗯,没有什么对我有用,除非这个有用......

  1. 我在我的解决方案中创建了一个新项目,对于这个项目,它可以工作,所以我将开始使用这个项目
  2. 玩arond,我开始调整csproj文件的xml以找出我在同一解决方案中的其他项目出了什么问题然后重置它,因为它似乎没有工作
  3. 现在我的项目再次神奇地工作
  4. 不是一个非常好的解决方案,但你应该尝试这些步骤

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

答案 19 :(得分:1)

上述所有情况都可能失败。

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

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

答案 20 :(得分:1)

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

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

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

这很不幸,因为通常你想把类分成“每个文件一个类”。你不得不破坏你的代码架构是非常可怕的,因为VS不想按你自己的方式去做。 :)

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

答案 21 :(得分:0)

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

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

public UserControl() {
...
}

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

答案 22 :(得分:0)

在UserControl中,确保将New声明为公开。如果它刚刚声明为Sub New(默认为Friend),它将不会显示。

答案 23 :(得分:0)

症状1:Form,UserControl和&amp ;;的设计视图组件失败了!

  • 我的表单设计视图失败w / msg"无法找到'用户控件'。"
  • 如果我可以让表单设计视图工作,那么它非常不稳定&如果发生任何变化,一切都会变坏。

症状2:UserControl& 工具箱

中的组件
  • 在工具箱中显示为灰色&显示了一个乱码
  • "选择项目"在工具箱上下文菜单中显示乱码名称&没有命名空间

解决方案:在UserControl后面的vb中将范围设置为公开,&成分

答案 24 :(得分:0)

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

我已将我的解决方案从drive:\work\c#\folder\移至drive:\work\folder,并解决了问题。

答案 25 :(得分:0)

我正在尝试构建仅限x64的应用程序,因此我的平台目标当然设置为x64

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

解决方法以查看工具箱中的控件:在项目设置中将平台目标设置为Any CPU。如有必要,可以为Debug和Release构建。

答案 26 :(得分:0)

正如前面提到的here,你应该告诉visual studio在工具箱中加载你的usercontrol。

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

答案 27 :(得分:0)

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

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

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

答案 28 :(得分:-1)

你好它的回答Ctrl + Alt + X取这个,后来你有TOOLBOX :)