Прежде всего, вы устанавливаете новый URL для того же элемента управления веб-браузера, даже до того, как он загрузит что-либо, таким образом вы просто увидите последний URL в вашем браузере. Определенно, браузеру, безусловно, потребуется некоторое время для загрузки URL-адреса, поэтому я предполагаю, что навигация отменяется задолго до того, как Document_Completed может быть запущен.
Есть только один способ сделать это одновременно,
Вы должны использовать элемент управления вкладками и открывать новый элемент вкладки для каждого URL-адреса, и у каждого элемента вкладки будет свой собственный элемент управления веб-браузера, и вы можете установить его URL-адрес.
foreach(string href in hrefs){
TabItem item = new TabItem();
WebBrowser wb = new WebBrowser();
wb.DocumentCompleted += wb_DocumentCompleted;
wb.Url = href;
item.Child = web;
tabControl1.Items.Add(item);
}
private void wb_DocumentCompleted(object sender, EventArgs e){
/// do your stuff...
}
Чтобы улучшить описанный выше метод, вы должны увидеть, как вы можете создать несколько элементов вкладок в разных потоках пользовательского интерфейса, это довольно интересная тема для обсуждения здесь, но это все еще возможно.
Другой способ - использовать очередь ...
private static Queue<string> queue = new ...
foreach(string href in hrefs){
queue.Enqueue(href);
}
private void webBrowser1_DocumentCompleted(object sender, EventArgs e){
if(queue.Count>0){
webBrowser1.Url = queue.Dequeue();
}
}