WebBrowserで、ComboBoxをコントロールする方法は?
-
2012年2月15日 1:31
ComboBoxを使ったwebページがあり、ComboBoxをマウスでクリックすると
表示されている内容が変わります。
これを、WebBrowser内でコントロールしたいと思います。
ComboBoxのHTMLは、次の通り
<select class="pdownBlog" onchange="document.blog_navi.submit();return false;" name="blog_id"> <option title="タイトル1" selected="" value="796307">表示1 [メイン]</option> <option title="タイトル2" value="794913">表示2</option> <option title="タイトル3" value="792724">表示3</option> <option title="タイトル4" value="789991">表示4</option> <option title="タイトル5" value="787894">表示5</option> </select>
この時に使ったソースコードは、次の通り。
WebBrowser1.Document.GetElementsByTagName("SELECT")(0) _ .SetAttribute("selectedIndex", "2")実行すると、ComboBoxの表示は変わりますが
Webページの切り替えができません。
「InvokeMember("Click")」などを使えば、できそうな気もしますがやり方が分かりません。
どのように対応したら良いですか。
ご教示願います。
すべての返信
-
2012年2月15日 2:03モデレータ
ComboBoxの表示を変えた後にsubmitしてみてはいかがでしょうか? 以下にsubmitのやり方が載っています。
(参考)
WebBrowserコントロール内のテキストボックスに文字列をセットするには?[2.0、C#、VB]
http://www.atmarkit.co.jp/fdotnet/dotnettips/860controlwb/controlwb.html
★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/
- 編集済み trapemiyaMVP, Moderator 2012年2月15日 2:04
- 回答としてマーク taokato 2012年2月15日 2:52
-
2012年2月15日 2:22
Webページの切り替え=onchangeイベントによるsubmit()の実行のことかと思います。その方法についてはtrapemiyaさんの書かれている通りです。
参考までになぜonchangeイベントが発生しないかについてですが、SELECT要素のドキュメント、そのonchangeイベントにはこう書かれています。
- Choose a different option in a select object using mouse or keyboard navigation.
- Alter text in the text area and then navigate out of the object.
ですので、WebBrowserコントロールのオブジェクト操作をしてもマウスやキーボードからではないためにイベントが発生しないのかと。
- 回答としてマーク taokato 2012年2月15日 2:52
-
2012年2月15日 2:55
ありがとうございます。
結局、このようなコードで動きました。
'コンボボックス選択 WebBrowser1.Document _ .GetElementsByTagName("SELECT")(0).SetAttribute("selectedIndex", "2") 'イベント実行 WebBrowser1.Document _ .All.GetElementsByName("blog_id")(0).RaiseEvent("onChange")

