2011-01-10 15 views
1

を応答していないdocumentcompleted:非常に奇妙な.NETのウェブブラウザ - 私はこれをやっている正しく

private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) 
{ 
    if (webBrowser1.DocumentText.IndexOf("Negative Orders") != -1) 
    { 
     webBrowser1.Navigate(@"http://............somepage"); 

     while (webBrowser1.ReadyState != WebBrowserReadyState.Complete) 
     { 
      Application.DoEvents(); 
     } 

     MessageBox.Show("finished loading"); 
    } 
} 

何かが起こっています。それはIF STATEMENTに正常に入ります。しかし、webBrowser.Navigateを実行すると、whileと入力し、そのあとすぐに戻ります。 メッセージボックスはまったくありません。

ここでは何が起こっていますか?

+1

デバッガで 'DocumentText'を見てください。 – SLaks

+0

@slaks shabsiよろしくお願いします。 –

+0

whileループの前にMessageBoxを置くとどうなりますか? –

答えて

1

例外が発生しているようです。トライキャッチで全部を入れてみてください、例外は、私はあなたのコードは、あなたのコールスタックダウン深いApplication.DoEvents();セクションにまだあるので、あなたのメッセージボックスが呼び出されていないと信じて

private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) 
{ 
    try 
    { 
     if (webBrowser1.DocumentText.IndexOf("Negative Orders") != -1) 
     { 
      webBrowser1.Navigate(@"http://............somepage"); 

      while (webBrowser1.ReadyState != WebBrowserReadyState.Complete) 
      { 
       Application.DoEvents(); 
      } 

      MessageBox.Show("finished loading"); 
     } 
    } 
    catch (Exception x) 
    { 
     System.Diagnostics.Debugger.Break(); 
    } 
} 
+0

コードのフォーマットが奇妙です。 –

+0

これを試してみましたが、例外はありません。何も起こりません。 –

+0

ここでもう少しコンテキストが必要です。 winformsアプリケーションのメインGUIスレッドでWebBrowserを使用していますか? –

0

を発生したときに壊します。おそらく、webBrowser1_DocumentCompletedメソッドを残して、次のDocumentCompletedハンドラを呼び出し、最後にReadyStateCompleteに設定するのを待っています。

Application.DoEvents();はまったく使用しないでくださいが、特にwebBrowser1_DocumentCompletedの内部には使用しないでください。

関連する問題