C# 无法在窗体上放置用户控件

C# 无法在窗体上放置用户控件,c#,.net,winforms,user-controls,C#,.net,Winforms,User Controls,我使用VS2010创建了一个C#WinForms应用程序。我不熟悉创建用户控件,所以我创建了一个新的用户控件(作为同一项目的一部分) 重建项目时,新控件将显示在工具箱中。当我将控件从工具箱拖到窗体上时,会出现以下错误 未能加载工具箱项“标记组”。它将从工具箱中删除 这也是我创建用户控件的唯一一次。我在网上搜索过,但我找到的大多数答案似乎都与将控件放在单独的程序集中有关。(注意,我发现很多问题与我遇到的问题相同。) 有人能建议我下一步应该去哪里吗?我终于想出了这个办法 我正在处理的项目使用两个类库

我使用VS2010创建了一个C#WinForms应用程序。我不熟悉创建用户控件,所以我创建了一个新的用户控件(作为同一项目的一部分)

重建项目时,新控件将显示在工具箱中。当我将控件从工具箱拖到窗体上时,会出现以下错误

未能加载工具箱项“标记组”。它将从工具箱中删除

这也是我创建用户控件的唯一一次。我在网上搜索过,但我找到的大多数答案似乎都与将控件放在单独的程序集中有关。(注意,我发现很多问题与我遇到的问题相同。)


有人能建议我下一步应该去哪里吗?

我终于想出了这个办法

我正在处理的项目使用两个类库程序集。虽然这些与我正在讨论的控件无关,但我查看并看到这两个库在属性| Build选项卡中将Platform Target设置为“Any CPU”

另一方面,我的应用程序将此设置设置为“x64”。通过将应用程序的设置更改为“任意CPU”,我现在可以将用户控件放到窗体上


想想看…

这里也有同样的问题。我猜这与安装在x64操作系统上的VS2010仍然是一个32位程序这一事实有关

您可能希望尝试的另一种解决方案是,只需打开FormThisUserControlIsupposedTobeAddedTo.Designer.cs,然后使用代码添加用户控件。基本上,你在做设计师应该做的肮脏的工作

这并不像听起来那么难,特别是考虑到该文件中可能已经有大量示例代码(例如,您使用Designer添加的按钮)。唯一困难的部分是找出表单中正确的坐标来放置控件


最终的结果是,您无法在Desinger中看到用户控件,但它们是在调试/运行时添加的

我的应用程序需要是64位。为了在设计器中使用自定义用户控件,我刚刚在解决方案中添加了一个新项目。这个新项目使用“AnyCPU”设置并包含我的所有用户控件

我的解决方案包含以下项目:

  • MyApp这是我的主项目(Windows窗体应用程序),以64位编译并引用我的第二个项目
  • MyApp.UI.UserControls(类库)是为“任何CPU”编译的,包含所有我的用户控件
它就像一个符咒,而且很干净


顺便说一句,关于这个问题有一个很好的解释

  • 操作:尝试在Microsoft Visual Studio集成开发环境(IDE)中使用64位组件
  • 错误原因:此行为是故意的。Visual Studio是一个32位进程,因此只能执行32位模块。虽然VisualStudio允许您添加对64位程序集的引用,但它实际上无法将其JIT编译为64位并在过程中执行
  • 决议:
  • 使用“AnyCPU”设置重新生成程序集。这将允许 要在32位进程(如Visual Studio)中运行的组件 Studio),或在64位进程中
  • 添加程序集作为引用,并在以下位置动态加载控件: 运行时。虽然您仍然无法使用 控件,您仍然可以 编写实例化控件所需的代码并将其设置为 相应的属性

来源:我也有这个问题,但答案不适合我。我的项目有一些问题,它只能分别针对x86和x64。换句话说,我不能使用任何CPU配置(这是因为我为每个配置引用不同的库,因为这些库不适合任何CPU)


我提出的解决方案是:当我需要使用表单设计器时,我将设置更改为x86。执行该作业,然后返回到x64并进行测试。问题只发生在设计师身上,但解决方案构建和运行良好。

我在VS2015中遇到了这个问题,结果证明解决方案很简单

我通过剪切和粘贴表单中的一些现有控件(目的是将它们分组到自定义控件中)创建了一个用户控件。自定义控件还可以(没有编译错误),但是从现有表单中删除控件意味着应用程序无法编译。当然,不能添加新控件意味着我不能用引用自定义控件的代码更新引用以前控件的代码


我所做的一切就是修改和删减(注释掉、创建临时控件等),以便整个应用程序能够编译。编译后,我发现我可以将自定义控件拖到表单上(没有引发此问题的错误)。然后,我必须取消勾选并取消闪烁,以便代码正确引用新的自定义控件。

转到项目属性,然后“构建”选项卡并检查“目标平台”是否为“AnyCPU”。

我也遇到过此问题,但原因不同。在我的例子中,组件(表单)构造函数或加载事件在别处调用了一个方法,该方法使用反射来查找实现某个接口的所有类


虽然这在运行时运行良好,但它在设计时生成了上述异常。(类型初始化异常,类型加载异常作为内部异常)。

在凌晨3:36进行了一个小时的混乱、疲劳的故障排除,第二天以全新的思维很容易解决

我修复了控件文件名中的一个简单拼写错误,因此它现在与UserControl名称匹配,经过清理和重新构建,并删除了你古怪叔叔的猫。:]

这将有助于显示一些代码。至少向我们展示类声明和构造函数,尽管整个类会很有帮助。当一个普通用户控件中没有任何内容=>VS