C# 韦伯浏览器控制和;导航帮助

C# 韦伯浏览器控制和;导航帮助,c#,C#,我可以将链接加载到webBrowser1中。通过添加按钮导航手册。但是,在循环中从列表框进行处理时,我无法使其工作。是否应该添加响应或等待函数?现在我听到的只是点击的声音,而浏览器控制窗口中什么也没有发生 private void start_btn_Click(object sender, EventArgs e) { if (listId.Items.Count != 0 && listCell.Items.Count != 0) { for

我可以将链接加载到webBrowser1中。通过添加按钮导航手册。但是,在循环中从列表框进行处理时,我无法使其工作。是否应该添加响应或等待函数?现在我听到的只是点击的声音,而浏览器控制窗口中什么也没有发生

private void start_btn_Click(object sender, EventArgs e)
{
    if (listId.Items.Count != 0 && listCell.Items.Count != 0)
    {
        for (int a = 0; a < listId.Items.Count; a++)
        {
            for (int b = 0; b < listCell.Items.Count; b++)
            {
                MakeReq(txtWebUpdate.Text + listId.Items[a].ToString() + 
                        "&admire=1", listCell.Items[b].ToString());
            }
        }
    }
}

void MakeReq(string Url, string Cell)
{

    try
    {
        txtSetUpdate.Text = (Cell);
        webBrowser1.Navigate(new Uri(Url));
    }
    catch (System.UriFormatException)
    {
        return;
    }

}
private void start\u btn\u单击(对象发送方,事件参数e)
{
if(listId.Items.Count!=0&&listCell.Items.Count!=0)
{
对于(int a=0;a
你的目标是什么

在这里,您只需调用
Navigate
,它将启动一个导航。它不在乎启动过程后会发生什么。因此,在您的代码中,循环会启动一行中的几个
导航
s,如果上一个已完成,则每个导航都会取消。因此,您将实际看到的唯一完整项将是列表中的最后一项

你的目标是什么


在这里,您只需调用
Navigate
,它将启动一个导航。它不在乎启动过程后会发生什么。因此,在您的代码中,循环会启动一行中的几个
导航
s,如果上一个已完成,则每个导航都会取消。因此,您将实际看到的唯一完整项将是列表中的最后一项

这是我最后使用的代码

   void WaitBrowserLoading()
    {
        while (webBrowser1.IsBusy)
            Application.DoEvents();
        for (int i = 0; i < 500; i++)
            if (webBrowser1.ReadyState != WebBrowserReadyState.Complete)
            {
                Application.DoEvents();
                System.Threading.Thread.Sleep(10);
            }
            else
                break;
        Application.DoEvents();
    }
void WaitBrowserLoading()
{
while(webBrowser1.IsBusy)
Application.DoEvents();
对于(int i=0;i<500;i++)
如果(webBrowser1.ReadyState!=WebBrowserReadyState.Complete)
{
Application.DoEvents();
系统线程线程睡眠(10);
}
其他的
打破
Application.DoEvents();
}

这是我最后使用的代码

   void WaitBrowserLoading()
    {
        while (webBrowser1.IsBusy)
            Application.DoEvents();
        for (int i = 0; i < 500; i++)
            if (webBrowser1.ReadyState != WebBrowserReadyState.Complete)
            {
                Application.DoEvents();
                System.Threading.Thread.Sleep(10);
            }
            else
                break;
        Application.DoEvents();
    }
void WaitBrowserLoading()
{
while(webBrowser1.IsBusy)
Application.DoEvents();
对于(int i=0;i<500;i++)
如果(webBrowser1.ReadyState!=WebBrowserReadyState.Complete)
{
Application.DoEvents();
系统线程线程睡眠(10);
}
其他的
打破
Application.DoEvents();
}

你到底想做什么?@Evan我试图处理每个链接,但正如Ash在下面所说的,它在循环过程中相互抵消。因此,我想我需要添加一些东西来确保首先完成该过程?要触发WebBrowser事件,需要泵送消息循环。我不会提到Application.DoEvents作为解决方案,这是个坏主意。更多信息:正确的方法是由DocumentCompleted事件驱动的状态机。你到底想做什么?@Evan我试图处理每个链接,但正如Ash在下面所说的,它在循环过程中相互抵消。因此,我想我需要添加一些东西来确保首先完成该过程?要触发WebBrowser事件,需要泵送消息循环。我不会提到Application.DoEvents作为解决方案,这是个坏主意。更多信息:正确的方法是由DocumentCompleted事件驱动的状态机。我如何让它处理我刚刚发现的每个事件。IsBusy会有帮助吗?我如何让它处理我刚刚发现的每个事件。IsBusy会有帮助吗?