【发布时间】:2015-07-17 07:21:52
【问题描述】:
伙计们!我必须通过包含 Web 浏览器的 win 表单应用程序中的代码自动设置一些字段值。唯一不起作用的是在多选中设置值。我可以通过代码单击按钮、设置文本框字段等,但多选列表不起作用(无法正确设置值)。首先,这是该元素在页面中的 HTML 代码:
<select size="10" name="someName" multiple="multiple" onchange="javascript:setTimeout('someFunc')" id="elementId" showconfirmedonly="true" showextraitems="true">
<option selected="selected" value="1">First opt</option>
<option value="2">Second opt</option>
<option value="3">Third opt</option>
<...other options...>
</select>
我尝试以这种方式首先取消选择所有元素:
webBrowser.Document.GetElementById(elementId).InnerHtml =
webBrowser.Document.GetElementById(elementId).InnerHtml.Replace(
"<option selected=\"selected\"", "<option");
然后我尝试以这种方式选择(仅一个)所需的元素(值):
webBrowser.Document.GetElementById(elementIWantToSelectId).Focus();
element.SetAttribute("selected", "selected");
webBrowser.Document.GetElementById(elementIWantToSelectId).InvokeMember("onchange");
首先我必须取消选择选定的选项,然后选择我想要的单个选项。如果我仅尝试使用 Replace 方法更改 html,则它不起作用,仅设置 selected 属性也不起作用。当任何值发生变化时(当调用 onchange 函数时 - 我必须在任何地方设置值时调用它)页面中的其他字段也会发生变化,这就是我必须调用“onchange”函数的原因。当代码执行时,所有选项都消失了,多选框为空,我觉得这很奇怪。任何如何解决我的问题的建议将不胜感激。
【问题讨论】:
标签: c# html winforms webbrowser-control