c#AxWebBrowser文档一旦单击将禁用浏览器

c#AxWebBrowser文档一旦单击将禁用浏览器,c#,events,onclick,dom,axwebbrowser,C#,Events,Onclick,Dom,Axwebbrowser,似乎有很多这样的问题,但找不到答案 我在这个线程中实现了OnClick事件: 但结果是浏览器被完全禁用(滚动条、控件…) 我在互联网上搜索过,找不到明确的解决方案 有人说,必须创建从WsbBrowser继承的新类,然后重载这些事件。 其他人说答案在这里,但我没有帐户 private void FormBrowser_DocumentComplete(object sender, DWebBrowserEvents2_DocumentCompleteEvent e) {

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

我在这个线程中实现了OnClick事件: 但结果是浏览器被完全禁用(滚动条、控件…)

我在互联网上搜索过,找不到明确的解决方案

有人说,必须创建从WsbBrowser继承的新类,然后重载这些事件。 其他人说答案在这里,但我没有帐户

 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;
    }

谁知道答案

我找到了一种处理AxWebBrowser HTML元素onclick事件的方法。 以下是您需要做的:

首先,我们需要创建一个dispatcher类:

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;
                }

            }
         }

希望这能有所帮助。

没有任何理由认为该代码会导致浏览器被禁用。你自己加了什么?复制问题的邮政编码。实际上有。这是一个常见的错误。有很多线程都有相同的问题。下面是代码。正如您所看到的,函数是空的。