2017-02-02 22 views
0

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

SHDocVw.InternetExplorer ie = new SHDocVw.InternetExplorer()

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

​​

这工作不错,但我需要通过一些参数与此事件,我无法弄清楚如何做到这一点。可能有一种方法可以从Internet Explorer调用C#方法吗?请指教。

+0

该事件不能提供任意参数。使用lambda表达式。 –

回答

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#应用程序中,您正在监听点击事件,只要事件引发您从元素中读取数据。可能不是最优雅的解决方案,但它的工作原理!

相关问题