DOBON.NET DOBON.NETプログラミング掲示板過去ログ

webbrowserのコンボボックス値セット

環境/言語:[VB.NET freamwork3.5 XP]
分類:[.NET]

こんにちは
webbrowserでコンボボックスの値を取得、セットしたいのですが
そこのURLのソースを見ましたら以下のようになっていました

<select size="1" name="ykk">
<option></option>
<option>リンゴ</option>
<option>イチゴ</option>
<option>ミカン</option>
<option>メロン</option>
</select>

だいたいvalueがあったので、いつもはそれで対処していたのですが、
何も無い場合はどのようにして取得、セットしたら良いのでしょうか?
ちなみにいつもはこんな感じの文があったら
<option value="mango">マンゴー</option>
こんな感じでセットしていました
WebBrowser1.Document.All("yee").SetAttribute("value", "mango")

よろしくお願いします
■No26702に返信(Tailさんの記事)
> 環境/言語:[VB.NET freamwork3.5 XP] 
freamwork
 ↓
Framework


> webbrowserでコンボボックスの値を取得、セットしたいのですが
HTML で「コンボボックス」という表現には若干の違和感を覚えますが、それは置いといて…。


> 何も無い場合はどのようにして取得、セットしたら良いのでしょうか?
幾つかの方法がありますが、selectedIndex プロパティを使うか、
option 要素の selected プロパティを使うのが手っ取り早いかと思います。


Public Class Form1
 Private Url As New Uri("http://www.itsenka.com/contents/development/html-css/html/optgroup.html")
 Private Sub Form1_Load() Handles Me.Load
  Button1.Enabled = False
  Button2.Enabled = False
  Button1.Text = "煎茶"
  Button2.Text = "烏龍茶"
  WebBrowser1.Navigate(Url)
 End Sub

 ' SELECT 要素の selectedIndex プロパティを利用する場合
 Private Sub Button1_Click() Handles Button1.Click
  WebBrowser1.Document.GetElementsByTagName("SELECT")(0).SetAttribute("selectedIndex", "2")
  ' http://msdn.microsoft.com/en-us/library/ms534624.aspx
 End Sub

 ' OPTION 要素の selected プロパティを利用する場合
 Private Sub Button2_Click() Handles Button2.Click
  ' アンマネージの場合は、SELECT の options プロパティから取得
  Dim opts = WebBrowser1.Document.GetElementsByTagName("SELECT")(0).GetElementsByTagName("OPTION")
  opts(4).SetAttribute("selected", "True")
  ' http://msdn.microsoft.com/en-us/library/ms534623.aspx
 End Sub

 Private Sub WebBrowser1_DocumentCompleted(ByVal sender As Object, _
  ByVal e As WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
  If e.Url = Me.Url Then
   Button1.Enabled = True
   Button2.Enabled = True
   WebBrowser1.Document.GetElementsByTagName("SELECT")(0).ScrollIntoView(True)
  End If
 End Sub
End Class
■No26703に追記(魔界の仮面弁士の記事)
>>何も無い場合はどのようにして取得、セットしたら良いのでしょうか?
> 幾つかの方法がありますが、selectedIndex プロパティを使うか、
> option 要素の selected プロパティを使うのが手っ取り早いかと思います。

項目番号ではなく、項目名で検索する場合はこんな感じです。


Dim itemText = "プーアル茶"

Dim opts = From elm As HtmlElement In WebBrowser1.Document _
          .GetElementsByTagName("SELECT")(0) _
          .GetElementsByTagName("OPTION") _
          Where elm.InnerText = itemText
If opts.FirstOrDefault IsNot Nothing Then
    opts.First().SetAttribute("selected", "True")
End If
魔界の仮面弁士様、レスありがとうございます

確かにコンボボックスって呼び方じゃないみたいですね
SELECTボックスでしょうか、あまり詳しくなくてすいません

WebBrowser1.Document.GetElementsByTagName("SELECT")("名前").SetAttribute("selectedIndex", "2")
上記のようなやり方でやろうと思います
optionの記述といい、いろいろなやり方があるのですね
ものすごく勉強になります

まだsubmitが押せたり押せなかったりするんですが、それは別件でスレ立ていたします。
が、もっと自分で模索してからにします。
時間を割いていただきありがとうございました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板