0

似乎有很多这样的问题,但找不到答案。

我已经像这个线程一样实现了 OnClick 事件:http: //support.microsoft.com/ ?kbid=312777 但结果是浏览器被完全禁用(滚动条、控件......)。

我搜索了互联网,找不到明确的解决方案。

有人说必须创建从 WsbBrowser 继承的新类,然后重载这些事件。其他人说答案在这里http://www.experts-exchange.com/Programming/Languages/C_Sharp/Q_20661377.html但我没有帐户。

 private void FormBrowser_DocumentComplete(object sender, DWebBrowserEvents2_DocumentCompleteEvent e)
    {
        mshtml.HTMLDocument doc;
        doc = (mshtml.HTMLDocument)FormBrowser.Document;
        mshtml.HTMLDocumentEvents2_Event iEvent;
        iEvent = (mshtml.HTMLDocumentEvents2_Event)doc;
        iEvent.onclick += new HTMLDocumentEvents2_onclickEventHandler(ClickEventHandler);
    }

private bool ClickEventHandler(mshtml.IHTMLEventObj e)
    {
        return true;
    }

谁知道解决方法?

4

1 回答 1

0

好吧,我找到了一种方法来处理 AxWebBrowser HTML 元素的 onclick 事件。这是您需要做的:

首先我们需要创建一个调度器类:

public class DispatcherSketchClass
    {
        public DispatcherSketchClass()
        {
        }
        [DispId(0)]
        public void DefaultMethod()
        {
        //this method will be called
        }
    }

然后我们只需将此 dispather 附加到某个元素:

 void AddDispatcher(AxWebBrowser browser)
        {
            IHTMLDocument2 doc = (IHTMLDocument2)browser.Document;

            foreach (IHTMLElement VARIABLE in doc.all)
            {
                //find right element
                if (VARIABLE.title == "the name")
                {
                    // attach here               
                    DispatcherClass dp = new DispatcherClass();
                    VARIABLE.onclick = dp;
                }

            }
         }

希望这可以帮助。

于 2012-06-12T12:29:07.690 回答