使用WPF webbrowser控件创建并触发自定义事件

时间:2015-11-26 16:33:44

标签: c# wpf webbrowser-control

在JavaScript中创建和触发自定义事件相对简单。我试图在WPF WebBrowser控件中执行相同的操作。我天真的做法:

    private void FirePreviewUpdateEvent()
    {
        var doc4 = (IHTMLDocument4) WPFBrowser.Document;
        if (doc4 == null) return;
        object eventObject = doc4.CreateEventObject(null);
        doc4.FireEvent("onpreviewupdated", ref eventObject);
    }

eventObject返回一个有效的ComObject,但是触发该事件会抛出一个ArgumentException,其中包含一个参数超出范围的消息(不说明哪个参数)。我做错了什么?

1 个答案:

答案 0 :(得分:0)

嗯,花了几个多小时,但我觉得这很有效:

private void FirePreviewUpdateEvent()
{
    dynamic doc = Browser.Document;
    var ev = doc.createEvent("event");
    ev.initEvent("previewUpdated", true, true);
    doc.dispatchEvent(ev);
}

我提出了一些利用已发布的IHtmlDocument接口的东西,因为不推荐使用像initEvent这样的方法。如果有人对此有所了解,请分享。