【发布时间】:2015-02-23 03:39:16
【问题描述】:
首先我有这个按钮点击事件:
private void toolStripButton3_Click(object sender, EventArgs e)
{
GetHtmls();
}
然后是GetHtmls方法:
private void GetHtmls()
{
for (int i = 1; i < 2; i++)
{
adrBarTextBox.Text = sourceUrl + i;
getCurrentBrowser().Navigate(adrBarTextBox.Text);
targetHtmls = (combinedHtmlsDir + "\\Html" + i + ".txt");
}
}
现在循环用于一个 html,但稍后我会将循环更改为 i
getCurrentBrowser 方法:
private WebBrowser getCurrentBrowser()
{
return (WebBrowser)browserTabControl.SelectedTab.Controls[0];
}
然后在加载 form1 事件中我有:
browser.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(Form1_DocumentCompleted);
还有完成的事件:
private void Form1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
WebBrowser currentBrowser = getCurrentBrowser();
StreamWriter writer = File.CreateText(targetHtmls);
writer.Write(getCurrentBrowser().DocumentText);
writer.Close();
}
我在这里所做的是将 html 加载到 Web 浏览器并在 html 源内容的硬盘上创建一个文件。 但我遇到了两个问题:
在完成的事件中,它不断调用完成的事件并一遍又一遍地创建 html 文件,直到加载 codument。我怎样才能让它在完成的活动中完成一次?我的意思是它会等到文件加载完毕,然后写入文件并只创建一次文件?
当循环将是
i < 45而不是2时,我如何做到这一点? 所以它会等待第一个 html 被加载,然后在完成写入时写入文件,在循环中创建下一个 html,然后在完成的事件中再次写入,依此类推,这样它就不会相互移动。
网络浏览器文档的完成事件与其他完成事件不同,它每秒左右调用完成事件,直到完成加载 html。
【问题讨论】:
标签: c# .net winforms webbrowser-control