无法在表单上放置用户控件

Jon*_*ood 33 .net c# user-controls winforms

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

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

无法加载工具箱项"TagGroup".它将从工具箱中删除.

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

任何人都可以建议我下一步要看哪里?

Yve*_* M. 34

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

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

  • MyApp是我的主要项目(Windows窗体应用程序),以64位编译并引用我的第二个项目
  • MyApp.UI.UserControls(类库)是为" 任何CPU " 编译的,包含我的所有用户控件

像魅力一样工作,很干净


顺便说一下,有一篇关于该问题的Microsoft支持文章.

  • 操作:您尝试在Microsoft Visual Studio集成开发环境(IDE)中使用64位组件.
  • 错误原因:此行为是设计使然.Visual Studio是一个32位进程,因此只能执行32位模块.虽然Visual Studio允许您添加对64位程序集的引用,但它实际上无法JIT将其编译为64位并在进程中执行它.
  • 解析度:
    1. 使用"AnyCPU"设置重建装配.这将允许组件在32位进程(例如Visual Studio)或64位进程中运行.
    2. 添加程序集作为参考,并在运行时动态加载控件.虽然您仍然无法在Visual Studio中的任何设计器中使用该控件,但您仍然可以编写实例化控件所需的代码并相应地设置它的属性.

资料来源: http ://support.microsoft.com/kb/963017

  • 耶士!我没有别的选择,只能用我的AutoCAD构建x64.以前的解决方案不起作用!此外,在此崩溃和烧毁之前,如果我不得不对该表格进行修改,我必须进入设计师并进行调整......每一次.这完美无瑕!是! (2认同)

Jon*_*ood 33

我终于想出了这一个.

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

另一方面,我的应用程序将此设置设置为"x64".通过将我的应用程序的设置更改为"任何CPU",我现在可以将我的用户控件放在我的表单上.

去搞清楚...


Dan*_*ler 6

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

我想出的解决方案是:当我需要使用表单设计器时,我将设置更改为x86.完成工作,然后重新设置为x64并进行测试.问题只发生在设计人员身上,但解决方案构建并运行良好.