Val*_*lav 5 c# webbrowser-control winforms
我有一个带有Web浏览器控件的C#表单.
我试图循环访问不同的网站.
但是,我无法控制URL地址加载到我的表单Web浏览器元素中.
这是我用于浏览URL地址的功能:
public String WebNavigateBrowser(String urlString, WebBrowser wb)
{
string data = "";
wb.Navigate(urlString);
while (wb.ReadyState != WebBrowserReadyState.Complete)
{
Application.DoEvents();
}
data = wb.DocumentText;
return data;
}
Run Code Online (Sandbox Code Playgroud)
如何使循环等到完全加载?
我的循环是这样的:
foreach (string urlAddresses in urls)
{
WebNavigateBrowser(urlAddresses, webBrowser1);
// I need to add a code to make webbrowser in Form to wait till it loads
}
Run Code Online (Sandbox Code Playgroud)
将此添加到您的代码中:
webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted);
Run Code Online (Sandbox Code Playgroud)
填写此功能
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) {
//This line is so you only do the event once
if (e.Url != webBrowser1.Url)
return;
//do you actual code
}
Run Code Online (Sandbox Code Playgroud)
小智 6
经过一段时间的疯狂的IE功能,我遇到了一些东西,这是判断页面加载完成最准确的方法.
永远不要使用WebBrowserDocumentCompletedEventHandler事件使用WebBrowserProgressChangedEventHandler和下面的一些修改.
//"ie"是我们的Web浏览器对象
ie.ProgressChanged += new WebBrowserProgressChangedEventHandler(_ie);
private void _ie(object sender, WebBrowserProgressChangedEventArgs e)
{
int max = (int)Math.Max(e.MaximumProgress, e.CurrentProgress);
int min = (int)Math.Min(e.MaximumProgress, e.CurrentProgress);
if (min.Equals(max))
{
//Run your code here when page is actually 100% complete
}
}
Run Code Online (Sandbox Code Playgroud)
简单的天才方法,我发现这个问题谷歌搜索"如何睡觉网页浏览器或暂停"