- ベストアンサー
webbrowserの読込完了が反応しない
- webbrowserの読み込み後の処理でテキストボックスへの書き込みがうまくいかない問題が発生しています。
- IsBusyやReadyStateを利用して待機してみたり、メッセージボックスを表示して手動で待ってみたりしましたが、解決策は見つかりませんでした。
- 読み込み完了を正確に検知してテキストボックスへの書き込みを行いたいと考えています。どのような方法があるのでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
WebBrowserのDocumentComplatedで処理を待ち受けたほうが良いかもしれないですよ WebBrowser1.Document.All.GetElementsByName("ex11") (1).InvokeMember("click") 'ボタンクリック でクリック後に飛ぶURLを フォームクラスの変数に代入しておいて DocumentComplatedイベントで if e.Url.AbsolutePath = myUrl.AbsolutePath then WebBrowser1.Document.All.GetElementsByName("ttl")(0).InnerText = "aaaa" myUrl = Nothing end if などとしてみてはいかがでしょう
その他の回答 (1)
- redfox63
- ベストアンサー率71% (1325/1856)
そのリンクからどこか他のページに飛んでから希望のページを表示していませんか? MsgBoxを出して手動で続行した場合に表示されるURLと MsgBoxが出たときのURLは同じなのでしょうか
お礼
回答ありがとうございます。 遅くなりましたこと、お詫びいたします。 URLはひとつのみです、ちなみに WebBrowser1.Document.All.GetElementsByName("ex11") 'ボタンクリック (1).InvokeMember("click") Do While WebBrowser1.ReadyState <> WebBrowserReadyState.Complete System.Windows.Forms.Application.DoEvents() Loop '待つ WebBrowser1.Document.All.GetElementsByName("ttl")(0).InnerText = "aaaa" MsgBox("読込どうかな") このような記載です。 ボタンをクリックした後、読込が終わる前に"aaaa"と"どうかな"の部分が走ってしまうので、"aaaa"は記載されずに終わります。 この2行を逆にし、先にmsgboxを読み込むと問題なくaaaaが入力されるのですが、完全自動にしたいので、それは避けたいのです。 http://oshiete.nikkeibp.co.jp/qa2599810.html このような回答も見つけたのですが、確かに私の記載したプログラムの前にはいくつかのwebサイトの移動がありますが、読込待ちがうまくいかないのは、この部分だけなんです。 非completeの指定の仕方も良くわかりません。
お礼
遅くなりました。 回答ありがとうございます。 おかげさまで希望するコードを書くことが出来ました。 また分からないことが出ると思いますが、お時間が許されましたらお願いいたします。