以下のような asp があった時に、通常のオペレーションでは Option1 ~ Option4 の値が選択されてサーバー側へ送信されますが、
<%
Dim message
If (Request.Form("requestTest_postback") <> "") Then
message = "選択された値:" & Request.Form("test") & "<br>"
End If
%>
<html>
<head>
<title>test</title>
</head>
<body>
<form name="requestInput" method="post" action="requestTest.asp">
<%=message %>
<select name="test">
<option value="opt1" selected>Option1
<option value="opt2">Option2
<option value="opt3">Option3
<option value="opt4">Option4
</select>
<input type="submit">
<input type="hidden" name="requestTest_postback" value="true">
</form>
</body>
</html>
Select タグの中の Option タグ達にない値をサーバー側に送信したい場合、HTML を改ざんすれば OK なわけですが
WebBrowser の Navigate を呼んだ後に WebBrowserオブジェクト.Document を改ざんする事でも同様の事ができます。
Public Class Form1
Private Sub btnNavigate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNavigate.Click
Me.WebBrowser1.Navigate(Me.TextBox1.Text)
End Sub
Private Sub btnSubmit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSubmit.Click
If Me.WebBrowser1.Document Is Nothing Then Return
Dim selects As HtmlElementCollection = Me.WebBrowser1.Document.GetElementsByTagName("select")
For Each selectTag As HtmlElement In selects
If selectTag.GetAttribute("name") = "test" Then
' select タグ かつ name 属性が test の時に option を無理やり追加してそれを選択させる
Dim fuji As HtmlElement = Me.WebBrowser1.Document.CreateElement("option")
fuji.SetAttribute("value", "ふじこ")
selectTag.AppendChild(fuji)
Dim len As String = CInt(selectTag.GetAttribute("length"))
selectTag.SetAttribute("selectedIndex", (len - 1).ToString())
Exit For
End If
Next
Dim formElement As HtmlElement = Me.WebBrowser1.Document.Forms(0)
formElement.InvokeMember("submit")
End Sub
End Class
お仕事用です。
EditRequest.zip