Я могу загрузить ссылку в руководство по webBrowser1.Navigate, добавив кнопку. Но я не могу заставить его работать во время обработки из списка в цикле. Есть ли функция ответа или ожидания, которую предполагается добавить? Сейчас я слышу только щелчки и ничего не происходит в окне управления браузером.

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

}
c#
0
acctman 29 Авг 2011 в 00:41

2 ответа

Лучший ответ

Это код, который я в итоге использовал.

   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();
    }
2
acctman 29 Авг 2011 в 04:01

Какова твоя цель?

Здесь вы просто вызываете Navigate, который просто запускает навигацию. Его не волнует, что произойдет после запуска процесса. Таким образом, в вашем коде цикл инициирует несколько Navigate подряд, каждый из которых отменяет предыдущий, если он еще не завершился. Таким образом, единственное, что вы действительно увидите завершенным, будет последним в вашем списке.

1
Ash Burlaczenko 28 Авг 2011 в 20:48