我有一个winform和一个WebBrowser
控件,我正在更改选择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");
但徒劳无功。
答案 0 :(得分:3)
我在选择一个选项后尝试并发送了一个TAB键,它引发了onchange事件。
webBrowser1.Document.GetElementsByTagName("select")[4].Focus();
webBrowser1.Document.GetElementsByTagName("select")[4]
.GetElementsByTagName("option")[13].SetAttribute("selected", "true");
SendKeys.Send("{TAB}");
现在一切都很好。
答案 1 :(得分:0)
尝试提高onChange事件:例如的RaiseEvent( “的onChange”);
编辑:它将在select元素上,而不是选项。
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");
答案 2 :(得分:0)
请参阅以下代码了解详情。
@Singleton