c# - 无法将用户控件放在窗体上

标签 c# .net winforms user-controls

我使用 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 位并在进程中执行。
  • 解决方案:
    1. 使用“AnyCPU”设置重建程序集。这将允许 要在 32 位进程中运行的组件(例如 Visual Studio)或 64 位进程。
    2. 将程序集添加为引用并动态加载控件 运行。尽管您仍然无法使用 在 Visual Studio 中的任何设计器中进行控制,您仍然可以 编写实例化控件所需的代码并将其设置为 相应的属性。

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

关于c# - 无法将用户控件放在窗体上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4800388/

相关文章:

c# - 简单对象和数组是如何传递的?

c# - 想隐藏cmd提示画面

c# - 从数据 GridView 单元格获取数据

c# - 如何在 WinForms 应用程序中处理表单?

winforms - 非事件控件背景颜色

c# - IComparable<T>.CompareTo 与 Sort 中的 null 进行比较

c# - 如何使 Visual Studio 2010 将文件扩展名识别为 C#/ASPX/C/C++ 文件?

c# - 是否可以更新使用 Syncfusion 的 DocIO 库生成的 Word 文档的目录(TableOfContents)?

.net - 关于依赖注入(inject)和工厂的疑惑

c# - 在 C# 中重用数组