我在ProjectA中创建了一些UserControl。我有ProjectB,它具有要放置控件的Windows窗体。这两个项目都在一个解决方案中。在ProjectB中有一个对ProjectA的引用,因此它可以“查看” UserControls。
但是,UserControls没有显示在工具箱中,我无法拖动到Windows窗体。
我尝试过重建。我还删除了“ bin”目录以强制全部重建。
如何使VS2008用我的UserControl填充工具箱?
我在ProjectA中创建了一些UserControl。我有ProjectB,它具有要放置控件的Windows窗体。这两个项目都在一个解决方案中。在ProjectB中有一个对ProjectA的引用,因此它可以“查看” UserControls。
但是,UserControls没有显示在工具箱中,我无法拖动到Windows窗体。
我尝试过重建。我还删除了“ bin”目录以强制全部重建。
如何使VS2008用我的UserControl填充工具箱?
Answers:
检查此设置:
工具>选项> Windows窗体设计器>常规:AutoToolboxPopulate
为此,应将其设置为True。
构建您的项目以确保它可以编译。
使用您要用户控制的表单,打开工具箱,右键单击并选择“选择项目”
浏览到在步骤1中编译的.exe或dll。
确保您的用户控件旁边有一个勾号,请按OK。
您的用户控件应出现在工具箱中,因此将其拖到您的窗体上。
这是根据卡兰努斯对类似问题的回答改编而成的。
就我而言,已经设置了AutoToolboxPopulate(Visual C#2010 Express)。
但是,我必须从工具箱的属性中激活“全部显示”(右键单击)才能真正看到我的新用户控件。
private
默认情况下是并且因此未显示。让它public
和它出现!显而易见,但容易忽略。
到目前为止,我对用户控件未显示在工具箱中没有任何问题。构建项目,它就会显示出来。然后今天不工作。经过搜索,我经历了跟随,但仍然没有喜悦。
因此,经过数小时的尝试使它无法成功运行之后,我创建了一个接受默认名称的新WPF Windows项目并添加了一个usercontrol。构建项目后,用户控件将如常显示。
然后,我认为我的项目或wpf窗口文件可能有问题。删除了该项目,创建了一个新项目并添加了一个新控件。建立了项目,但是没有成功。
我唯一不同的是为该项目选择一个名称,该名称在“ WPF Application”名称中包含一个空格。
再次删除该项目,并在没有空格的情况下再次创建一个名为“ WPFApplication”的新项目,并添加了一个用户控件。构建它并显示用户控件。
如果希望用户控件在构建时自动显示在工具箱中,请不要在项目名称中使用空格。希望这篇文章可以节省别人的大量时间。
还要仔细检查您的用户控件是否具有有效的命名空间。
我只是发现没有名称空间的控件未放置在工具箱中。
通常,您需要构建解决方案。这几乎总是对我有用。
对于可能正在与之一起工作的人ToolStripItems
(例如ToolStripStatusLabel
),要真正使派生的控件显示在下拉菜单中(例如的StatusStrip
),您需要将类设置为public
然后构建解决方案。
同样不要忘记您的类的designer属性,如下所示:
using System.Windows.Forms.Design;
[ToolStripItemDesignerAvailability(ToolStripItemDesignerAvailability.StatusStrip)]
public class MyStatusLabel : ToolStripStatusLabel
{
}
花了我一段时间才做对。希望这可以节省别人的时间。
我的控件是公开的,它在“选择工具箱项”对话框中被选中,但仍未显示。
这终于对我有用:
右键单击工具箱中的某个位置,然后单击“选择项目”。当我找到我的物品时,它已经被检查。然后,我取消选中该项目并单击“确定”。接下来,我再次右键单击工具箱并搜索我的项目...它不见了,所以我单击了浏览,导航到obj / x86 / debug文件夹并选择了我的exe。该项目然后被正确添加到工具箱。
我认为这是VS错误。
除了已经给出的所有说明(工具>选项> Windows窗体设计器>常规:AutoToolboxPopulate)+您需要构建解决方案(这对我来说是显而易见的),您可能必须注意类访问修饰符:必须上市。我只是创建了一个控件,而没有出现在工具箱列表中,我也不知道为什么。所以设定后
public class yourClass:control {}
比列表中显示的要多。;)希望这会对他人有所帮助。
我通常要做的是创建一个新选项卡,然后将exe / dll添加到该选项卡...由于加载时间和一般的麻烦,我对该解决方案不太满意。
一位朋友向我展示了一种加快速度的方法。对于您制作的每个新控件,无需在工具箱等中单击“选择项目...”,您可以创建一个名为的文件,MyCustomControls
然后可以在其中创建自定义控件。
现在,您只需要执行“选择项目...”并一次添加此文件即可。如果以后决定添加新控件,请在其中创建MyCustomControls
然后重新构建。
然后,您的工具箱将具有新控件。(如果有,它将以常规编译自动显示AutoToolboxPopulate
认为)
不幸的是,因为通常您希望将类分为“每个文件一个类”。仅仅因为VS不想按照自己的方式去做,就不得不毁了代码体系,这太可怕了。:)
我对这个解决方案也不是很满意,但是如果您需要快速执行某项操作,而又不必关心文件中的多个用户控件或者只是懒惰,那么这可能很适合您。:)
几个小时前,我掉进了这个陷阱。
我有一个带有一些自定义UserControl的.NET 2.0 Windows应用程序项目;工作正常。因此,我决定在子文件夹中订购文件,以使我的项目更加整洁。
在那之后,Visual Studio 2010设计器停止加载我的表单,并且ToolBox将不再显示我的控件。
我吓坏了,将源文件移回项目根目录,重新设置了ToolBox,但似乎没有任何效果。之后,我记得我使用过ReSharper的“删除未使用的引用”,所以我尝试放回未使用的引用,尤其是System.Data:问题已解决!:O我不能说你为什么,但这对我有用。
希望我的经验可以帮助别人。:)
再见,南度
如果您仍然找不到为什么未使用用户控件填充vstudio工具箱的原因。然后,您可以使用另一个Visual Studio调试vstudio。在这里您可以找到方法。
在我的情况下,错误的原因是控件的.dll路径的长度过长。我缩小了一点,一切都正常了。
我还发现路径中的特殊符号(例如,我使用了#)会影响控件的显示。
希望它能解决问题。
你好它的答案Ctrl + Alt + X接这个,后来你有了TOOLBOX :)