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

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

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

  • 添加到 Windows 窗体的 ActiveX 控件会随着窗体一同全部部署,这可能会显著增加所创建文件的大小。 此外,在 Windows 窗体上使用 ActiveX 控件需要写入注册表。 这对用户计算机的侵入性比 Windows 窗体控件更强,因为后者不需要如此。

    注意

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

    注意

    如果 ActiveX 控件的成员的名称与 .NET Framework 中定义的名称匹配,则 ActiveX 控件导入程序将在创建 AxHost 派生类时,将用 Ctl 作为成员名称的前缀。 例如,如果 ActiveX 控件具有名为 Layout的成员,则会在 AxHost 派生类中将其重命名 为 CtlLayout,因为 .NET Framework 中定义了 Layout 事件。

另请参阅