用户控件未显示在工具箱中
我有一些UserControls,我在ProjectA中创build。 我有ProjectB,有一个窗体,我想把控制。 这两个项目都在一个解决scheme中。 ProjectB中有一个对ProjectA的引用,所以它可以“看见”UserControls。
但是,用户控件不显示在工具箱中,我拖动到窗体。
我试过重build。 我也删除了“bin”目录来强制重build。
我如何获得VS2008与我的UserControls工具箱?
检查这个设置:
工具>选项> Windows窗体devise器>常规:AutoToolboxPopulate
它应该被设置为True才能工作。
-
build立你的项目,以确保它编译。
-
用您希望用户控制的表单,打开工具箱,右键单击并select“select项目”
-
浏览到您在步骤1中编译的.exe或dll文件。
-
确保你的用户控件旁边有个打勾,按OK。
-
你的用户控件应该出现在工具箱中,所以把它拖到你的表单上。
这是根据卡拉努斯的回答改编的一个类似的问题 。
在我的情况下,AutoToolboxPopulate已经设置(Visual C#2010 Express)。
不过,我不得不从工具箱的属性中激活“全部显示”(右键单击),以实际看到我的新用户控件。
直到现在,我没有问题与usercontrols不显示在工具箱中。 build立该项目,它只是显示。 那么今天不工作。 经过search,我经历了以下,但仍然没有喜乐。
- 工具>选项> Windows窗体devise器>常规:AutoToolboxPopulate
- 工具>选项>文本编辑器> XMAL>杂项:AutoToolboxPopulate
- 将VS设置重置为默认值
所以经过几个小时的尝试,使其无法成功工作,我创build了一个新的WPF Windows项目接受默认名称,并添加一个用户控件。 build立项目和用户控制出现,因为它始终。
然后我认为我的项目或wpf窗口文件可能有问题。 删除了项目,创build了一个新的项目并添加了一个新的控件。 build立的项目,但没有奏效。
我做的唯一不同的是为项目select一个名称,我在名为“WPF应用程序”中包含一个空格。
再次删除项目,并创build一个新的名为“WPFApplication”没有空间,并添加了一个用户控件。 build立它,用户控制出现。
如果您希望usercontrols在构build工具箱中自动显示,请不要在项目名称中使用空格。 希望这篇文章能够挽救别人一大笔浪费的时间。
用户控件可能不会显示在工具箱中的另一个原因是,如果他们没有默认的构造函数。
再次检查你的用户控件是否有一个有效的名字空间。
我刚刚发现没有命名空间的控件不放置在ToolBox中。
通常你需要build立解决scheme。 这几乎总是对我有用。
我有同样的问题。 大量的谷歌search后,我没有find任何东西,但偶然发现,如果你在同一个项目中,你已经创build了用户控制,点击工具箱,并检查“ 显示所有 ”,然后一个组与您的项目名称相同将显示在工具箱的顶部,您可以在其中find用户控件。现在,您可以将控件添加到所需的表单中!
对于可能使用ToolStripItems
(例如ToolStripStatusLabel
)的人来说,为了让你的派生控件显示在下拉菜单中(例如StatusStrip
), 你需要将该类设置为public
然后构build解决scheme。
另外不要忘记你的类的devise器属性,如下所示:
using System.Windows.Forms.Design; [ToolStripItemDesignerAvailability(ToolStripItemDesignerAvailability.StatusStrip)] public class MyStatusLabel : ToolStripStatusLabel { }
花了一段时间才弄清楚。 希望这可以节省别人的时间。
我的控制是公开的,在“select工具箱项目”对话框中进行了检查,但是仍然没有显示出来。
这是最后为我工作的:
右键单击工具箱中的某个地方,然后点击“select项目”。 当我发现我的物品时,它已经被检查。 我然后取消选中该项目,然后单击确定。 接下来,我再次右键单击工具箱,并search我的项目…它不见了,所以我点击浏览,导航到OBJ / x86 /debugging文件夹,并select我的EXE。 该项目然后正确地添加到工具箱。
我认为这是一个VS错误。
除了已经给出的所有说明(工具>选项> Windows窗体devise器>常规:AutoToolboxPopulate)+您需要构build解决scheme(这对我来说很明显),您可能不得不注意类访问修饰符:它必须是上市。 我刚刚创build了一个控件,没有出现在工具箱列表中,我不知道为什么。 所以设置后
public class yourClass:control {}
比列表中出现的要多。 ;)希望这会帮助别人。
检查你的编译输出目录。 如果由于某种原因,你正在build立你的输出,而不是project bin目录,你的控件将不会显示在你的工具箱中。
这是我的问题:我添加了一个新的构造函数,我的控件接受了一些参数,但我没有明确地重新声明空的构造函数! 工具箱只能包含具有空构造函数的控件。 一般来说,当你在VB中devise一个类时,它有一个隐式定义的空构造函数(意思是你不需要声明一个)。 但是,一旦你开始devise你自己的构造函数,这个空的构造函数就会消失,所以你需要在代码中明确地重新定义它。 无论如何,我知道最有经验的VB编码器已经知道这一切,但希望这可以帮助像我这样的新手:)。
上述所有可能失败。
我通过创build一个新的用户控件(TestControl)来修复它,并且它触发了Visual Studio,将我的项目的控件选项卡+控件重新添加到工具箱中。 然后我刚刚删除了testing控件。
顺便说一下,在最近安装了一个VS 2008自动化的Windows更新之后,这发生在我身上。
我通常做的是创build一个新的选项卡,并将exe / dll添加到该选项卡…由于加载时间和一般麻烦,不太舒服的解决scheme。
一位朋友向我展示了一种加快速度的方法。 而不必点击工具箱等中的“select项目…”,您可以创build一个名为MyCustomControls
的文件,您可以创build自定义控件。
现在,您只需执行“select项目…”并添加此文件一次。 如果您以后决定添加一个新的控件,请在MyCustomControls
创build它,然后重新生成。
那么你的工具箱将有你的新的控制。 (如果你有AutoToolboxPopulate
话,它会自动显示一个常规编译)
这是不幸的,因为通常你想把课程分成“每个文件一个类”。 你不得不毁掉你的代码架构,因为VS不想以你自己的方式去做。 🙂
我不太喜欢这个解决scheme,但是如果你需要快速做一些事情,而且你不关心文件中的多个用户控件,或者只是懒惰的,这可能适合你。 🙂
那么,除了这个工作,没有什么是为我工作…
- 我在我的解决scheme中创build了一个新项目,对于这个项目来说,它是可行的,所以我将开始使用这个项目
- 玩arond,我开始调整csproj文件的xml,以找出在同一个解决scheme,我的其他项目有什么问题,然后我重置它,因为它似乎没有工作
- 现在它在我的项目中再次神奇地工作
不是一个很好的解决scheme,但你应该尝试这些步骤
- 看看它是否在一个全新的解决scheme/项目中工作。
- 看看它是否在同一个解决scheme中的一个全新的项目中工作
- 如果#2的工作,也许比较.csproj文件…不知何故我开始工作,当我这样做(这是非常令人沮丧的)。
提供你已经试过摆弄:
- 工具>选项> Windows窗体devise器>常规:AutoToolboxPopulate
- 工具>选项>文本编辑器> XMAL>杂项:AutoToolboxPopulate
- 创build了一个默认构造函数
- build立您的项目/重置工具箱,并手动添加您的选项卡
但你仍然看到它变灰了..
检查你的path长度,并检查绝对path中使用的 字符 。
我有一个项目驻留在“C:\ Users \ myName \ myCompany \ R&D \ Projects”
几个小时后发现“研发”是问题。
“ & ”不允许在我的工具箱中启用我的用户控件项目。
几小时前,我陷入了这个陷阱。
我有一个.NET 2.0的Windows应用程序项目与一些自定义UserControls; 它工作正常。 所以我决定在子文件夹中排列我的文件,使我的项目更清洁一些。
之后,Visual Studio 2010devise器停止加载我的表单,ToolBox将不再显示我的控件。
我吓坏了,移回项目根源文件,重置ToolBox,但似乎没有任何工作。 之后,我记得我用ReSharper“删除未使用的引用”,所以我试图把未使用的引用 ,特别是System.Data :问题解决了! :哦,我不能说你为什么,但是这对我有效。
希望我的经验能帮助别人。 🙂
再见,南多
如果您仍然无法find您的vstudio工具箱未安装usercontrols的原因。 然后你可以用另一个visual studiodebuggingvstudio。 在这里你可以find如何 。
如果您已经尝试了所有其他的答案,但仍然无法正常工作,下面为我解决了这个问题:
- 右键单击包含您的控件的项目。
- select
Properties
。 - 在“
Build
设置”类别中,确保选中“Register for COM interop
。
在我的情况下,错误的原因是我的控制的.dllpath的多余的长度。 我缩小了一点,一切都变好了。
我还发现,path中的特殊符号(例如,我用#)会影响控制显示。
希望它解决了这个问题。
在你的UserControl中,确保New被声明为Public 。 如果它只是声明为“新build”(默认为“朋友”),则不会显示。
症状1:窗体,用户控件和组件的devise视图失败!
- 我的表单devise视图失败,味精“无法find”用户控制“。”
- 如果我能得到表单devise视图的工作,它是非常不稳定和腐败所有地狱W /任何改变。
症状2: 工具箱中的用户控件和组件
- 在工具箱中显示为灰色,并显示一个乱码
- “工具箱”上下文菜单中的“select项目”显示乱码名称和无名称空间
解决scheme:在用户控件和组件的vb后面将范围设置为公共
检查项目path,避免& , #等
我已经将我的解决scheme从drive:\work\c#\folder\
到drive:\work\folder
,并解决了问题。
我正在尝试构build一个仅适用于x64的应用程序,所以当然我的平台目标被设置为x64
。
但是,即使在2016年,Visual Studio( devenv.exe
)仍然是一个32位进程,无法加载64位程序集。 要检查您的Visual Studio的位,打开任务pipe理器并检查进程的名称*32
。
解决方法以查看工具箱中的控件:将平台目标设置为项目设置中的Any CPU
。 如有必要,请执行“debugging和发布”构build。
当我试图将我的UserControl添加到工具箱(右键单击工具箱,select项目,select我的DLL),它会显示一条消息,说我的DLL中没有控件。
无论如何,这个问题已经解决了,试图在VS中的DLL中创build一个表单并添加UserControl。 显示的错误消息说没有默认的构造函数
public UserControl() { ... }
devise者需要这个,因为它不知道什么有效的参数。 一旦我将一个空白的构造函数添加到用户控件,它被添加到工具箱没有问题。
如上所述,您应该告诉visual studio将您的usercontrol加载到工具箱中。
[ToolboxItem(true)] public class PanelTitle : LabelControl { // Whatever code to override LabelControl here... }
尝试添加自定义控件之前,请确保它与当前项目的.Net版本兼容。
我正试图添加一个自定义控件工具箱的Windows CE 5.0和VS2008上的.Net Compact v3.5的项目。 我做了所有以前的build议,但没有任何工作。 当“全部显示”被选中但显示为灰色时,即使在“select项目”菜单中也会显示该控件。
我使用.Net v2.0创build了一个新项目,并且工作完美。
你好它的答案Ctrl + Alt + X采取这个和以后你有TOOLBOX 🙂