【发布时间】:2021-09-09 13:33:42
【问题描述】:
我正在 Visual Studio 2019 中创建一个 Windows 应用程序。我使用了一个 COM 引用(IBM PCOMM v 13,32 位),它仅在我将项目目标设置为 x86 时才有效。
当我将目标从 Any CPU 或 x64 更改为 x86 时,COM 引用效果很好。但是,我通过继承创建的所有控件都从设计器视图中消失了。表格基本上是空的。我自己的控件存储在项目中包含的单独 .cs 文件中。
当我将目标改回 Any CPU 或 x64 时,我的控件重新出现,但 COM 引用不起作用(由于不是 x86 em>)。
这是我在表单中使用的一种简单控件的 .cs 代码:
using System;
using System.Drawing;
using System.Windows.Forms;
namespace Stackoverflow
{
public class LabelTitle : Label
{
public LabelTitle()
{
ForeColor = Color.FromArgb(0, 95, 165);
Font = new Font("Segoe UI", 11, FontStyle.Bold);
}
}
}
值得注意的是,标准控件在 x86 中工作。不过,我更喜欢使用自己的自定义控件。
在 x86 中构建时如何继续使用自己的控件?
【问题讨论】:
-
我自己的控件存储在单独的 .cs 文件中是什么意思?您是否构建了一个库,或者这些控件是同一个项目的一部分,存储在不同的文件中?如果是这种情况,当您更改目标 CPU 时,控件没有理由不工作。除非您有错误阻止 Designer 的初始化完成(例如,使用错误的 CharSet 进行 P/Invoking)。 -- 尝试清理解决方案(不是项目),重建解决方案,关闭 VS 并重新启动它。之后添加 alien 的东西。
-
嗨,吉米。 我自己的控件存储在单独的 .cs 文件中,我的意思是我右键单击解决方案资源管理器中的项目名称 > 添加 > 新项目。然后我选择了一个 Visual C# 类并将其命名为 LabelTitle.cs。此 .cs 文件存储在 windows 的项目文件夹中 (...\repos\Stackoverflow),因此也存储在 Project Explorer 的项目中。我尝试了您的建议来清理解决方案,重建解决方案,关闭 VS 并重新启动它,但没有任何反应。我也试过关闭VS,删除bin和obj文件夹,但也没有解决。
-
更新:表单现在不会再出现在任何 CPU 或 x64 上。这很奇怪。
-
你有更多/不同的问题。检查工具箱,看看你是否在那里找到你的控件。将
[ToolboxItem(true)]添加到所有使用嵌套命名空间的自定义控件。检查所有控件的实际命名空间,验证它是否一致。 -- 可能,将所有控件添加到以 AnyCPU 为目标的库中。 -
我尝试在控件命名空间中包含 [ToolboxItem(true)] 但没有成功。
标签: c# visual-studio winforms inheritance x86