我有一个winform和一个WebBrowser控件,并且我正在更改select HTML控件中的一个选项。
webBrowser1.Document
.GetElementsByTagName("select")[4]
.GetElementsByTagName("option")[13]
.SetAttribute("selected", "true");现在,它可以工作并选择所需的选项,但不会触发onchange事件。select没有元素id,但它有一个类名。
我试过了:
webBrowser1.Document
.GetElementsByTagName("select")[4]
.RaiseEvent("onchange");和
webBrowser1.Document
.GetElementsByTagName("select")[4]
.GetElementsByTagName("option")[13]
.RaiseEvent("onchange");但都是徒劳的。
发布于 2011-05-19 04:21:31
在选择一个选项后,我尝试并发送了一个TAB键,它引发了onchange事件。
webBrowser1.Document.GetElementsByTagName("select")[4].Focus();
webBrowser1.Document.GetElementsByTagName("select")[4]
.GetElementsByTagName("option")[13].SetAttribute("selected", "true");
SendKeys.Send("{TAB}");现在一切都好了。
发布于 2011-05-18 22:56:42
尝试引发onChange事件:例如RaiseEvent("onChange");
编辑:它将在选择元素上,而不是在选项上。
EDIT2:
var selectControlElement = webBrowser1.Document
.GetElementsByTagName("select")[4];
selectControlElement.RaiseEvent("onChange");此外,检查selectControlElement是否有任何事件也是值得的。
另一种选择(未经我测试)
object obj = selectControlElement.DomElement;
System.Reflection.MethodInfo mi = obj.GetType().GetMethod("onchange");
mi.Invoke(obj, new object[0]);也可以试试
selectControlElement.InvokeMember("onchange");发布于 2018-01-10 19:24:42
有关详细信息,请参阅下面的代码。
void SetComboItem(string id, string value)
{
Forms.HtmlElement ddRouteSelected = wBrowser.Document.GetElementById(id);
foreach (Forms.HtmlElement item in ddRouteSelected.Children)
{
if (item.InnerText != null && item.InnerText.ToLower().Equals(value.ToLower()))
{
item.SetAttribute("selected", "Selected");
item.SetAttribute("value", value);
ddRouteSelected.InvokeMember("onchange");
break;
}
}
}https://stackoverflow.com/questions/6044607
复制相似问题