本帖最后由 CXL88688 于 2015-02-14 11:20:02 编辑

解决方案 »

  1.   


    你上面那样写,他的导至事件的先优权被你注册的方法解捕获,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)
              {          }
      

  2.   

    wyd1520您给的事件委托代码,我看了没看懂。所以挑了个简单的。没想到程序大体弄完发现这个问题。头痛好几天了。貌似您上次给我说的这个没有办法得到触发的页面元素。
      

  3.   

    谢谢wyd1520貌似这个有点复杂。就是一个简单小程序。不想搞那么复杂。我试试。谢谢你,祝您新年快乐!
      

  4.   

    这个也是事件委托吗?刚在网上找了个例子看了一下。感觉晕晕的
    您好wyd1520,mshtml中没有HTMLEvent这个类型,这个类型需要新建吗?
    度娘已经把我的这个帖子抓取,好神速
      

  5.   


    public delegate void HTMLEvent(IHTMLEventObj e);