我正在使用
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#方法吗?请指教。
答案 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中,您正在侦听点击事件,一旦事件引发您从元素中读取数据。可能不是最优雅的解决方案,但它确实有效!