none
AxWebBrowserでページのコンボボックスの選択項目を変えたい RRS feed

  • 質問

  • C# 1.1 でページを表示させて、コンボボックスを自動的に選択する機能をもつソフトを作っています。
    .NET 1.1には.NET WebBrowserコントロールがないので、AxSHDocVw.AxWebBrowserを参照してコントロールを追加しています。
    さらにMSHTMLも参照してあります。

    以下のようなソースをもつHTMLページを表示させ、Button1をクリックすることで、「数学」を選択するようにしたいのですがどうしてもうまくいきません。但し教科はその都度変わるのでSelectedIndex=1のような指定ではなく内容を確認して数学なら選択するということをしたいのです。

    <SELECT name=subject>
       <OPTION value=0>国語</OPTION>
       <OPTION value=1>数学</OPTION>
       <OPTION value=2>理科</OPTION>
       <OPTION value=3 selected>社会</OPTION>
    </SELECT>

     

    Button1_Clickで次のように記載。

    mshtml.IHTMLDocument3 document = (mshtml.IHTMLDocument3)axWebBrowser1.Document;
    mshtml.HTMLSelectElementClass selectElement = (mshtml.HTMLSelectElementClass)document.getElementById("subject");

    mshtml.IHTMLElementCollection elements = (mshtml.IHTMLElementCollection)(selectElement.options);   //*1
       
    for(int i=0;i<elements.length;i++)
    {
       mshtml.HTMLOptionElementClass optionElement = (mshtml.HTMLOptionElementClass)elements.item("OPTION", i);   //*2

       if(optionElement.text == "数学")
       {
          optionElement.selected = true;
       }
    }


    しかし、これだと、*1の時点で「System.InvalidCastException(指定されたキャストは有効ではありません。)」とエラーになります。
    また*2のitemの使い方も適切かわかりません。そもそもitemを使うのかも不明です^_^;

    1週間ほど前から色々試してますが解決できませんでした。
    OPTIONの内容を確認して選択状態にするにはどうしたらいいのでしょうか?

    2007年3月24日 7:56