我希望在网页完全加载到我的Winforms WebControl中后显示一个MessageBox右。
我使用此代码延迟:
System.Threading.Thread.Sleep(4000);
Task.Delay(2000);
这些都不起作用。问题是我得到了一个无限循环。
有人可以给我一个解决方案或更好的替代品(如果有的话)吗?
这是我的代码
private void btnGo_Click(object sender, EventArgs e)
{
try
{
string WebPage = txtURL.Text.Trim();
Webcntrl.Navigate(WebPage); // Webcntrl is Name of webcontrol in my Windows Applications
while (Webcntrl.ReadyState.ToString() != "Complete")
{
//System.Threading.Thread.Sleep(4000);
//Task.Delay(2000);
}
MessageBox.Show("hI ! website loaded Sucessfully");
}
catch (Exception ex)
{
}
}
根据Ahmed ilyas建议我按照以下修改代码
private void btnGo_Click(object sender, EventArgs e)
{
try
{
string WebPage = txtURL.Text.Trim();
Webcntrl.Navigate(WebPage); // Webcntrl is Name of webcontrol in my Windows Applications
Webcntrl.DocumentCompleted +=new WebBrowserDocumentCompletedEventHandler(SiteLoaded);
}
catch (Exception ex)
{
}
}
private void SiteLoaded(object sender, WebBrowserDocumentCompletedEventArgs e)
{
MessageBox.Show("hI ! website loaded Sucessfully");
}
但是现在,消息会弹出多次。
答案 0 :(得分:1)
您应该使用Web浏览器控件的documentcomplete事件:
这会在页面加载完成时通知您。你正在做的是进入一个while循环并保持浏览器控件正在执行的线程,因此什么都不会"工作"即使你进入线程睡眠(不建议BTW做什么)