请教关于mshtml.IHTMLDocument3加onclick事件

CXL88688 2015-02-14 11:13:10
做一个页面数据采集打印的小程序。
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的各位朋友新年快乐
...全文
282 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
CXL88688 2015-02-14
  • 打赏
  • 举报
回复
谢谢wyd1520貌似这个有点复杂。就是一个简单小程序。不想搞那么复杂。我试试。谢谢你,祝您新年快乐!
CXL88688 2015-02-14
  • 打赏
  • 举报
回复
wyd1520您给的事件委托代码,我看了没看懂。所以挑了个简单的。没想到程序大体弄完发现这个问题。头痛好几天了。貌似您上次给我说的这个没有办法得到触发的页面元素。
本拉灯 2015-02-14
  • 打赏
  • 举报
回复
你上面那样写,他的导至事件的先优权被你注册的方法解捕获,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<System.Windows.Forms.Form>().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)
          {

          }
本拉灯 2015-02-14
  • 打赏
  • 举报
回复
引用 4 楼 CXL88688 的回复:
这个也是事件委托吗?刚在网上找了个例子看了一下。感觉晕晕的 您好wyd1520,mshtml中没有HTMLEvent这个类型,这个类型需要新建吗? 度娘已经把我的这个帖子抓取,好神速
public delegate void HTMLEvent(IHTMLEventObj e);
CXL88688 2015-02-14
  • 打赏
  • 举报
回复
这个也是事件委托吗?刚在网上找了个例子看了一下。感觉晕晕的 您好wyd1520,mshtml中没有HTMLEvent这个类型,这个类型需要新建吗? 度娘已经把我的这个帖子抓取,好神速

111,092

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧