0

我在用着

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# 方法吗?请指教。

4

1 回答 1

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 元素并触发点击事件。在 C# 应用程序中,您正在侦听单击事件,一旦事件引发,您就会从元素中读取数据。可能不是最优雅的解决方案,但它有效!

于 2017-02-03T22:02:48.867 回答