首先,我想说我见过这两个问题:
How to handle an ActiveX event in Javascript
How can I make an ActiveX control written with C# raise events in JavaScript when clicked?
现在我有了这个测试控件:
interface EventsInterface
{
[DispId(0)]
void myEvent();
}
[ClassInterface(ClassInterfaceType.None)]
[ComSourceInterfaces(typeof(EventsInterface))]
[Guid("0002EA9A-0BAF-4A9C-8300-7E4D7D371445")]
public partial class Test : UserControl
{
public delegate void Event();
public event Event myEvent;
public Test()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
myEvent();
}
}
只有一个按钮。
我在这个html页面中测试控件:
<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title></title>
</head>
<body>
<object id="Control" classid="CLSID:0002EA9A-0BAF-4A9C-8300-7E4D7D371445"/>
<script for="Control" event="myEvent()">
alert("hello");
</script>
</body>
</html>
当我单击IE 8中的按钮时,它应该是alert("hello")
,而是抛出一个NullPointerException,即myEvent为null所以这意味着事件处理程序不是从javascript设置的。
为什么不起作用?以及如何使它工作?
顺便说一句,我在Windows 7上使用64位版本的IE测试页面。
我尝试签署我的程序集,但它没有用,我的所有谷歌搜索都显示我的代码是正确的,为什么它不起作用?我该怎么办?