我是新來的C#及其概念,所以我很抱歉,如果這個問題是一種愚蠢的。 我嘗試使用的WinForms WebBrowser控件WebBrowser控件 - 等待頁面加載後提交表格
elements = webBrowser1.Document.GetElementsByTagName("input");
foreach (HtmlElement element in elements)
{
if (element.GetAttribute("value") == "Anzeigen")
element.InvokeMember("click");
}
while (webBrowser1.ReadyState != WebBrowserReadyState.Complete) Application.DoEvents();
// do some math on recived html
// ......
// show results
MessageBox.Show(numPlanets.ToString());
所以做一些automatation,來解釋它: 進出口尋找值爲「Anzeigen」按鈕,模擬就可以了一下,然後等到新頁然後加載並做我的計算。 不幸的是,我的計算是在舊的HTML內容上完成的,因爲它沒有等待頁面加載。奇怪的是,如果我輸入一個Thread.Sleep(5000);在foreach循環之後,在模擬點擊之前執行該睡眠,並且計算也失敗。
我只是需要一些同步行爲,沒有使用事件。
希望你能幫助我與,對不起我的英文不好
編輯: 解決這樣的: 變量BOOL webbbrowserfinished裏面的類=假,如果我想要同步的行爲,我不喜歡這樣:
webbrowserfinished = false;
// do navigation here
while (!webbrowserfinished)
{
Application.DoEvents();
Thread.Sleep(100);
}
webbrowserfinished = false;
爲什麼不你想使用事件嗎? –
這是不可能的,國際海事組織。我使用了web瀏覽器控件_a lot_,包括[編輯模式](http://www.codeproject.com/Articles/43954/ZetaHtmlEditControl)。我從來沒有找到同步解決方案,因爲我確實認爲加載只是異步進行的。 –