在 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 事件。