我使用 VS2010 创建了一个 C# WinForms 应用程序。我是创建用户控件的新手,所以我创建了一个新的用户控件(作为同一项目的一部分)。
当我重建项目时,新控件出现在工具箱中。当我将控件从工具箱拖到窗体上时,出现以下错误。
Failed to load toolbox item 'TagGroup'. It will be removed from the toolbox.
这也是唯一一次我创建用户控件时发生的情况。我在网上搜索过,但我发现的大多数答案似乎都与将控件放在单独的程序集中有关。 (请注意,我发现了很多与我遇到的问题相同的问题。)
谁能建议我接下来应该看哪里?
最佳答案
我的应用程序需要是 64 位的。为了在设计器中使用自定义用户控件,我刚刚在我的解决方案中添加了一个新项目。这个新项目使用“AnyCPU”设置并包含我所有的用户控件。
我的解决方案包含以下项目:
- MyApp 这是我在 64 位 中编译的主要项目(Windows 窗体应用程序)并引用了我的第二个项目
- MyApp.UI.UserControls(类库)为“任何 CPU”编译并包含我的所有用户控件
工作起来很有魅力,而且很干净
顺便说一句,有一个Microsoft support article关于那个问题。
- 操作:您尝试在 Microsoft Visual Studio 集成开发环境 (IDE) 中使用 64 位组件。
- 错误原因:此行为是设计使然。 Visual Studio 是一个 32 位进程,因此只能执行 32 位模块。虽然 Visual Studio 允许您添加对 64 位程序集的引用,但它实际上无法将其 JIT 编译为 64 位并在进程中执行。
- 解决方案:
- 使用“AnyCPU”设置重建程序集。这将允许 要在 32 位进程中运行的组件(例如 Visual Studio)或 64 位进程。
- 将程序集添加为引用并动态加载控件 运行。尽管您仍然无法使用 在 Visual Studio 中的任何设计器中进行控制,您仍然可以 编写实例化控件所需的代码并将其设置为 相应的属性。
关于c# - 无法将用户控件放在窗体上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4800388/