@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

VB2005 webbrowserコントロールの制御について

1
投稿者投稿内容
未記入
会議室デビュー日: 2008/01/12
投稿数: 1
投稿日時: 2008-01-12 06:09
WebBrowserコントロールの制御について困っています。

あるページをNavigateメソッドで読み込み、
そのSelectタグの任意の項目をマウスでクリックしたときと
まったく同じ制御をプログラムから行おうとしています。
SetAttributeでSelectedIndexを設定する方法はわかるのですが、
scriptでクリックイベントを処理しており、
クリックによってscriptを実行させたいために、
Webbrowserコントロールにクリックしたことをイベントで渡したいです。

具体的には・・・
NameがWebBrowser1というWebBrowserコントロールで表示された、
1番目のselectタグの3番目のoptionを選択したいときに、
WebBrowser1.Document.Body.GetElementsByTagName("select")
.Item(0).GetElementsByTagName("option").Item(2).InvokeMenber("click")
で大丈夫な気がするのですが、
これだとなぜか一番目の項目が選択されてしまいます。

なお、InvokeMenberで指定できるメソッド名はタグにより異なると思いますが、
どの辺のホームページで調べることができるでしょうか?
DOMとかDHTMLとかをキーワードで探しましたが、
あまり理解できませんでした。

初心者の質問でわかりにくいかも知れませんが、よろしくお願いします。
飛行船
会議室デビュー日: 2008/04/11
投稿数: 7
投稿日時: 2009-02-07 01:14
こんにちは

javascriptを併用した動的HTMLですね。
私も同様な問題で悩みましたが、解決できましたのでその方法を記します。

WebBrowser1.Document.Body.GetElementsByTagName("select") .Item(0).GetElementsByTagName("option").Item(2).SetAttribute("selected", "selected")
WebBrowser1.Document.Body.GetElementsByTagName("select") .Item(0).RaiseEvent("onchange")

ポイントは、1行目で先ず該当項目を選択し、
2行目でonchangeイベントを発生させることです。
1行だけでは記述できないので、このように2行に分ける必要があります。
1

スキルアップ/キャリアアップ(JOB@IT)