0

私はこの問題の解決策を探していましたが、まだうまくいくものを見つけていません。私は webBrowser コントロールを持っています。次のような構造の複数のドロップダウン リストがあります。

<select name="cars" multiple>
  <option value="volvo">Volvo</option>
  <option value="saab" SELECTED>Saab</option>
  <option value="opel">Opel</option>
  <option value="audi" SELECTED>Audi</option>
</select>

<p>Hold down the Ctrl (windows) / Command (Mac) button to select multiple options.</p>

すでにいくつかのオプションが選択されています。「Volvo」など、別のオプションを 1 つ選択する必要があります。典型的な方法は、ctrl キーを押しながらオプションを右クリックすることです。私は sendKeys クラスを見ていましたが、それが正しいかどうか完全にはわかりません。これが私が試したことです:

foreach (HtmlElement item in webBrowser1.Document.GetElementsByTagName("option"))
{
    if (item.InnerText == "Volvo")
    {
        item.Focus();
        SendKeys.Send("^(+)");//sends ctrl-space
    }
}

アイテムにフォーカスが当たっていないように見えるので、SendKeys が機能しているかどうかはわかりません。

私もこれを試しました:

foreach (HtmlElement item in webBrowser1.Document.GetElementsByTagName("option"))
{
    if (item.InnerText == "Volvo")
    {
        item.SetAttribute("SELECTED", "");
    }
}

...しかし、これもうまくいかないようです。
どんな助けでも大歓迎です

4

1 に答える 1

0

うーん、恥ずかしながら答えは意外と簡単でした…。

どうやら、SetAttribute メソッドは 2 番目の引数として空の文字列を取りません。これはうまくいった解決策です:

foreach (HtmlElement item in webBrowser1.Document.GetElementsByTagName("option"))
{
    if (item.InnerText == "Volvo")
    {
        item.SetAttribute("SELECTED", "SELECTED");
    }
}
于 2014-01-15T02:05:51.277 に答える