不能在winform中暂停webbrowser1_navigation事件.c#

本文关键字:navigation 事件 webbrowser1 暂停 winform 不能 | 更新日期: 2023-09-27 18:10:13

我尝试在winform应用程序的浏览器控件中通过鼠标钩子记录一些互联网活动。很少发生点击链接而不记录点击的情况因为一切都发生得太快了我的代码在

public void WebBrowser1Document_Click(object sender, HtmlElementEventArgs e)
        {    
            tempHtmlElement = webBrowser1.Document.ActiveElement;
            ...

方法无法到达终点。在90%的情况下,记录发生了,但有时它经过了webBrowser1_Navigating事件之后,就像我说的,经过了WebBrowser1Document_Click,然后webBrowser1.Document.ActiveElement中断了。我有ActiveElement变量没关系,这个变量失去了对一些属性的访问权限,例如Name。所以我的问题是如何暂停webbrowser1活动,直到记录。这是一个STA应用程序

不能在winform中暂停webbrowser1_navigation事件.c#

假设导航在Click方法完成之前发生,您可以通过一种棘手的方法暂停。使用全局变量cannavate

bool canNavigate;
public void WebBrowser1Document_Click(object sender, HtmlElementEventArgs e)
        {    
            canNavigate=false;
            tempHtmlElement = webBrowser1.Document.ActiveElement;
            ...
            ...
            //At the End 
            canNavigate=true;
         }


    void webBrowser1_Navigating(object sender, WebBrowserNavigatingEventArgs e)
        {
            do
            {
Application.DoEvents(); Thread.Sleep(100);
            } while (!canNavigate);
        }