在 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 中定义的某一名称匹配,则 ActiveX 控件导入程序在创建 AxHost 派生类时会在该成员名称前加上 Ctl 前缀。 例如,如果 ActiveX 控件有一个名为“Layout”的成员,由于在 .NET Framework 中定义了 Layout 事件,因此该成员在 AxHost 派生类中将重命名为“CtlLayout”

另请参阅