3

C#WebBrowswerコントロールを使用していますが、ページが読み込まれていないときに[次へ]のようなボタンを押すと、プログラムが続行しようとしますが、代わりにnullエラーが発生するという問題があります。

ページの読み込みが完了するまでプログラムを待たせる機能はありますか?

HTMLページのタイトルをチェックするwhileループをプログラムに入れようとしましたが、プログラムがフリーズします。次のようなものがプログラムをフリーズします。

    while(!webbrowser1.Document.Title.ToString().Equals("NextPageTitle"))
   {
   }
   ::NextCommands::

それは動作しません、私はそれを試しました、そしてボタン「fblqf」はクリックされません。ただし、nullエラーは返されません。

public void button1_Click(object sender, EventArgs e)
{



    webBrowser1.Document.GetElementById("q").SetAttribute("value", "חחח");
    webBrowser1.Document.GetElementById("btnK").InvokeMember("Click");
    webBrowser1.DocumentCompleted += webBrowser1_DocumentCompleted;


}
void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
    // do the work you need to do now that that page has completed loading
    webBrowser1.Document.GetElementById("fblqf").InvokeMember("Click");
}

解決:

public void button1_Click(object sender, EventArgs e)
{
    webBrowser1.Document.GetElementById("q").SetAttribute("value", "חחח");
    webBrowser1.Document.GetElementById("btnK").InvokeMember("Click");
    int x=0;
    while (x==0)
   {
       System.Windows.Forms.Application.DoEvents();
        if(webBrowser1.Document.GetElementById("pnnext") != null)
        break;
   }

    webBrowser1.Document.GetElementById("pnnext").InvokeMember("Click");
    webBrowser1.Document.GetElementById("q").Focus();
}
4

2 に答える 2

7

WebBrowswer.DocumentCompletedイベントをフックする必要があります。

おそらくコンストラクターまたはOnLoadで:

webBrowser1.Document.GetElementById("q").SetAttribute("value", "חחח"); 
webBrowser1.DocumentCompleted += webBrowser1_DocumentCompleted; 
webBrowser1.Document.GetElementById("btnK").InvokeMember("Click"); 

次に、イベントは次のようになります。

void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
    // do the work you need to do now that that page has completed loading
}
于 2012-04-15T22:45:50.380 に答える
1

簡単な解決策を見つけました!!!

public void button1_Click(object sender, EventArgs e)
{
    webBrowser1.Document.GetElementById("q").SetAttribute("value", "חחח");
    webBrowser1.Document.GetElementById("btnK").InvokeMember("Click");

    while (true)
   {
       System.Windows.Forms.Application.DoEvents();
        if(webBrowser1.Document.GetElementById("pnnext") != null)
        break;
   }

    webBrowser1.Document.GetElementById("pnnext").InvokeMember("Click");
    webBrowser1.Document.GetElementById("q").Focus();
}
于 2012-04-20T22:41:29.843 に答える