如何将参数从SHDocVw.InternetExplorer事件传递给C#应用程序

时间:2017-02-02 21:42:36

标签: c# internet-explorer shdocvw

我正在使用

SHDocVw.InternetExplorer ie = new SHDocVw.InternetExplorer()

在某些时候,我需要从Internet Explorer中触发我的C#应用​​程序中的事件。我是这样做的:

 var eventObj = btn.GetType()
                .GetEvents()
                .FirstOrDefault(e => e.Name == "HTMLElementEvents_Event_onclick");

            if (eventObj != null) 
                eventObj.AddEventHandler(btn, new HTMLElementEvents_onclickEventHandler(GenericDomEvent));

这可行,但我需要通过此事件传递一些参数,而我无法弄清楚如何做到这一点。可能有办法从Internet Explorer调用C#方法吗?请指教。

1 个答案:

答案 0 :(得分:0)

经过几个小时的敲击撞墙后,我想出了一个解决方案。我正在使用不同的活动:

  var eventObj = btn.GetType()
                .GetEvents()
                .FirstOrDefault(e => e.Name == "HTMLElementEvents2_Event_onclick");

            if (eventObj != null) 
                eventObj.AddEventHandler(btn, new HTMLElementEvents2_onclickEventHandler(GenericDomEvent));

这是事件处理程序:

    private bool GenericDomEvent(IHTMLEventObj e)
    {            
        var element = e.srcElement;
        var command = element.title;
        var param = element.innerText;
        //Do whatever you want...
    }

此解决方案的想法是将数据放入DOM元素并触发click事件。在C#app中,您正在侦听点击事件,一旦事件引发您从元素中读取数据。可能不是最优雅的解决方案,但它确实有效!