C#编写ActiveX控件问题。IE中无法触发事件
我利用很简单的办法创建了类似于ActiveX的控件,步骤如下:
1. 创建Windows Control Libary,实现控件的属性、方法和事件。并在C#的Windows Application中测试该组件,一切正常。
2. 通过工具Creat Guid,创建GUID,设置到类的GUID属性。设置项目属性。Make assembly COM-Visible为True,Register for COM Interop为True。
3. 实现IObjectSafety接口,在Assembly.cs文件中添加[assembly: AllowPartiallyTrustedCallers()]
4. 通过在HTML文件中用<object id="MyAx" name="MyAx" classid="clsid:15C969FD-5CA4-494D-AF9B-A0C9CCE576C0">的方式,ActiveX控件可以正常显示。
利用js调用ActiveX控件的属性和方法一切正常。但是无法响应ActiveX触发的事件。跟踪发现,ActiveX控件中的点燃函数无法执行。
html中的事件响应代码如下:
<script language='javascript' for=MyAxevent='OnClickButton()'>
alert("ss");
</script>
ActiveX控件中的事件点燃代码为:
if (ClickEvent != null)
{
Invoke(ClickEvent);
}
ClickEvent始终为null,如果不进行判断强行执行点燃函数,后果是IE进程失去响应。
因此我判断,利用该方式创建的类似ActiveX控件存在某些兼容性问题。无法在IE中触发事件。
以上的代码我参考自http://homer.cnblogs.com/archive/2005/01/04/86473.aspx
不知道有人遇到过没有。有什么办法可以解决这个问题。多谢了。