请教关于mshtml.IHTMLDocument3加onclick事件
本帖最后由 CXL88688 于 2015-02-14 11:20:02 编辑
做一个页面数据采集打印的小程序。
mshtml.IHTMLDocument3 eDoc3 = ie.Document as mshtml.IHTMLDocument3;
((mshtml.HTMLDocumentEvents2_Event)ieDoc3).onclick += new mshtml.HTMLDocumentEvents2_onclickEventHandler(Doc_onclick);
对IHTMLDocument3添加onclick后,程序运行时发现页面鼠标左右键不能正常响应。页面的input标签也无法输入任何值。
度娘很久发现很多朋友也遇到这个问题?有的说obj.returnValue = true造成的。有的说是页面兼容性造成的。都尝试过无法解决。
大家是怎么处理这个问题的?----------------麻烦大家帮帮忙这个问题弄好几天了,快愁死了。
提前预祝csdn的各位朋友新年快乐
------解决思路----------------------
你上面那样写,他的导至事件的先优权被你注册的方法解捕获,HTML控件无法触发相应的事件,
要像下面要这样,先让HTML先捕获到事件,然后再让其路由到你注册的事件
[ComVisible(true)]
public class HTMLEventHandler
{
public HTMLEvent OnHandler;
private HTMLDocument Document;
public HTMLEventHandler(HTMLDocument doc)
{
this.Document = doc;
}
[DispId(0)]
public void Call()
{
if (System.Windows.Forms.Application.OpenForms.Count > 0)
{
System.Windows.Forms.Form frm = System.Windows.Forms.Application.OpenForms.Cast().First();
if (frm.InvokeRequired)
{
frm.Invoke(new Action(() =>
{
OnHandler(Document.parentWindow.@event);
}));
}
}
}
}
m_objDoc = (HTMLDocument)ie.Document;
m_DispHTMLDoc = (DispHTMLDocument)m_objDoc;
HTMLEventHandler Handler = new HTMLEventHandler(m_objDoc);
Handler.OnHandler += new HTMLEvent(this.m_objEvent_onclick);
m_DispHTMLDoc.onclick = Handler;
void m_objEvent_onclick(IHTMLEventObj pEvtObj)
{
}