在 Windows 窗体上托管 ActiveX 控件时的注意事项

尽管 Windows 窗体已经过优化以托管 Windows 窗体控件,但仍可以使用 ActiveX 控件。 规划使用 ActiveX 控件的应用程序时,请记住以下注意事项:

  • 安全 公共语言运行时在代码访问安全性方面得到了增强。 具有 Windows 窗体的应用程序可以在完全受信任的环境中顺利运行,并在半受信任的环境中大多数功能仍然可用。 Windows 窗体控件可以托管在浏览器中,且没有任何复杂性。 但是,Windows 窗体上的 ActiveX 控件不能利用这些安全增强功能。 运行 ActiveX 控件需要非托管代码权限,该权限通过 SecurityPermissionAttribute.UnmanagedCode 属性来设置。 有关安全和非托管代码权限的详细信息,请参阅 SecurityPermissionAttribute

  • 总拥有成本 添加到 Windows 窗体的 ActiveX 控件会与 Windows 窗体一起部署,这可能会显著增加所创建文件的大小。 此外,在 Windows 窗体上使用 ActiveX 控件需要写入注册表。 这比 Windows 窗体控件对用户计算机的侵入性更强,而后者不需要这样。

    注释

    使用 ActiveX 控件需要使用 COM 互操作封装器。 有关详细信息,请参阅 Visual Basic 和 Visual C# 中的 COM 互作性

    注释

    如果 ActiveX 控件的成员的名称与 .NET Framework 中定义的名称匹配,则创建AxHost派生类时,ActiveX Control Importer 会将成员名称作为 Ctl 前缀。 例如,如果 ActiveX 控件具有名为 Layout 的成员,则会在 AxHost 派生类中重命名 CtlLayout ,因为 布局 事件是在 .NET Framework 中定义的。

另请参阅