我有一个WinForm
申请。我也为它创建了自己的User Control
。一切都很好。直到今天,当我尝试将其添加回我的程序时,我收到了错误消息(我从未将其删除.Visual Studio确实如此)。
无法加载工具箱项#UserControlName。它将被删除 工具箱。
我在我的解决方案资源管理器中有它,但在此错误后它从我的工具箱中消失了。 我也收到警告说:
永远不会分配'#UserControlName',并且永远都会分配它 默认值为null。
当我查看我的设计师代码时,这是真的。但我没有用我的设计师代码做任何事情。我的用户控件是在那里定义的,但没有实例化。我怎么能把它放回去?
是否与我将构建平台从x32
更改为x64
这一事实有关?如果是这种情况,我会感到惊讶,因为该程序在更改后工作正常。
答案 0 :(得分:18)
我的某个应用程序遇到了同样的问题,无法找到解决方案。所以我手动创建了用户和自定义控件。在再次搜索网页后,我终于找到了设计师为这个特定项目失败的原因。答案是项目是64位而Visual Studio仍然没有64位版本,它仍然是32位。因此,设计人员无法在64位应用程序或类库中加载控件。阅读微软关于此的文章。 Visual Studio网站上有一篇文章,但它被删除了。请参阅Visual Studio支持论坛中的答案。
答案 1 :(得分:17)
我最近遇到了同样的问题。由于这个(本网站和互联网上的任何其他答案)实际上对我有所帮助,我找到了修复它的方法 只需清理文件并重建解决方案即可。就这么简单。
答案 2 :(得分:2)
您无需手动插入用户控件。我有同样的情况,有一个原因
在我的情况下,它失败了,因为EXE程序集使用CLR支持类型/clr
编译为“混合模式”。通过设置类型/clr:pure
将其更改为“仅限托管”后,它就可以了
有关详细信息,请参阅http://localhost:8000/ibis/ws/Tasklist。
答案 3 :(得分:1)
在这些时候,你将被迫修改设计师代码。只要您不对设计器代码进行重大更改,就不应该破坏任何内容。为了安全起见,重新实例化实例化其他控件的对象(靠近页面顶部)。设计师应填写空白等空白。
这也应该将控件返回到工具箱。
答案 4 :(得分:1)
在使用源代码管理中的前一个工作副本进行少量更改的大型自定义控件解决此问题数小时之后,我将所有代码复制到一个新的控件名称和文件中,并且一切正常。
这是为了识别代码的问题行,因为调试器不会合作。复制的控件(以及大量支持代码和模块)工作正常。
所以这些是修复原始代码的非常简单的步骤
步骤4对您来说可能是可选的,但是如果您有源代码控制权并且它是一个库,您可能希望这样做。
这使控件重新回到我所有不起作用的表格上(据我所知)。似乎VS中的问题是以某种方式记得它不喜欢它?
希望这会有所帮助,我希望下次当我忘记修复时,我会发现此消息:)
P.S。清理,重建和/或重新运行解决方案是这个问题的旧版本,但这次它只是一个整体(DLL)类中的一个自定义控件。希望这会有所帮助。
答案 5 :(得分:1)
右键单击 - 重建解决方案为我修复了它!
答案 6 :(得分:0)
更改为AnyCPU并重建项目。 Visual Studio的64位控件存在问题。
答案 7 :(得分:0)
检入form.designer文件中是否存在该类型的滞后属性。 它发生在我身上好几次了。 在我删除该行并重建项目之后,一切都开始工作。
答案 8 :(得分:0)
对我来说,添加userControl之后,我首先重建应用程序,然后通过转到项目=>刷新项目工具箱项来刷新工具箱上的项
答案 9 :(得分:0)
就我而言,它有助于将创建的用户控件的头文件手动包含在要使用这些控件的表单顶部。
答案 10 :(得分:-2)
我遇到了同样的问题,但找到了解决办法:
用鼠标左键单击“ Project_Name”,然后单击“构建”,然后可以将 UserControl 添加到 WinForm 。