如何从javascript处理c#activex事件

时间:2018-02-19 13:08:23

标签: javascript c# events activex

首先,我想说我见过这两个问题:
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测试页面。

修改

我尝试签署我的程序集,但它没有用,我的所有谷歌搜索都显示我的代码是正确的,为什么它不起作用?我该怎么办?

0 个答案:

没有答案