none
WebBrowserで、ComboBoxをコントロールする方法は? RRS feed

  • 質問

  • 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日 1:31

回答

  • 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/


    2012年2月15日 2:03
    モデレータ
  • 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:22

すべての返信

  • 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/


    2012年2月15日 2:03
    モデレータ
  • 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:22
  • ありがとうございます。

    結局、このようなコードで動きました。

            'コンボボックス選択
            WebBrowser1.Document _
    .GetElementsByTagName("SELECT")(0).SetAttribute("selectedIndex", "2")
            'イベント実行
            WebBrowser1.Document _
    .All.GetElementsByName("blog_id")(0).RaiseEvent("onChange")
    

    2012年2月15日 2:55