在 IE 中使用 Windows 窗体控件
根据在线监测项目需要,要求实现在IE中运行SmartClient程序,而且需要能够和客户端的JavaScript进行交互。
在.NET SDK的文档中有相关内容描述如下:
- IE 内的Windows窗体控件无需用户提示即可激活,它不要求注册,而且遵守公共语言运行库 (CLR) 代码访问安全性法则;
- 在 IE 中几乎可以承载任何Windows窗体控件,该控件必须被安装到全局程序集缓存(GAC)或者与使用它的Web页面位于相同的虚拟目录中;
- IIS虚拟目录的执行权限必须为纯脚本,否则将无法激活要使用的控件。
在 IE 中运行Windows窗体控件,需要如下步骤:
- 创建Windows窗体控件:
新建Windows 控件库项目,和普通的控件库一样。 - 创建引用该Windows窗体控件Html文档:
在Html文档中加入object标记,该标记引用Windows窗体控件例如:
<object id="smartClient1" classid="http:ClientLib/SmartClientLib.dll#SmartClientLib.UserControl1"
width="300" height="300">
<param name="Text" value="Simple Control">
</object>
最重要的就是classid,包括指向控件库的相对路径和控件的完全限定名,与ActiveX的object标记不同的是Windows窗体控件不需要guid,在Windows窗体控件中,路径和完全限定类名将作为唯一的标识;也可以param标记,设置控件上的属性,name表示属性的名称,value表示属性的值;也可以通过JavaScript脚本访问控件的公开的属性、方法。 - 创建虚拟目录并设置权限:
如上所述,设置网页所在虚拟目录的权限,并部署Windows窗体控件。 - 运行该控件:
启动 IE 浏览网页,Windows窗体只能够在 IE 浏览器中运行,不能够在其它的浏览器中运行。
注意:如果用VS2005编译,出现窗体控件不能够正常显示,或者不能和客户端JavaScript脚本进行交互访问,将所有的Windows窗体控件代码复制到一个文件中,用.NET附带的命令行工具csc/vbc进行编译,则可以正常显示,不知是怎么回事。
张志敏所有文章遵循创作共用版权协议,要求署名、非商业 、保持一致。在满足创作共用版权协议的基础上可以转载,但请以超链接形式注明出处。
本博客已经迁移到 GitHub , 围观地址: https://beginor.github.io/