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

C# 使用WPF webbrowser控件创建并触发自定义事件,c#,wpf,webbrowser-control,C#,Wpf,Webbrowser Control,在JavaScript中创建和触发自定义事件相对简单。我正试图在WPF WebBrowser控件中执行同样的操作。我天真的做法: private void FirePreviewUpdateEvent() { var doc4 = (IHTMLDocument4) WPFBrowser.Document; if (doc4 == null) return; object eventObject = doc4.CreateEventO

在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
,并显示一条消息,说明某个参数超出范围(不说明是哪个参数)。我做错了什么?

好吧,花了几个多小时,但我发现这是可行的:

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

我提出了一些利用已发布的
IHtmlDocument
接口的方法,因为像
initEvent
这样的方法已被弃用。如果有人对此有见解,请分享。

好吧,这花了几个小时,但我发现这很有效:

private void FirePreviewUpdateEvent()
{
    dynamic doc = Browser.Document;
    var ev = doc.createEvent("event");
    ev.initEvent("previewUpdated", true, true);
    doc.dispatchEvent(ev);
}
我提出了一些利用已发布的
IHtmlDocument
接口的方法,因为像
initEvent
这样的方法已被弃用。如果有人对此有见解,请分享