在C#WebBrowser控件中,我使用w.RenderBeginTag(HtmlTextWriterTag.Select)生成了一个包含许多OPTION元素的SELECT HtmlElement。
我需要在用户更改时获取select的值,因此在WebBrowser DocumentCompleted事件中添加了一个事件处理程序。
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
....
webBrowser1.Document.GetElementById("id_select_0").AttachEventHandler("onchange", new EventHandler(ddSelectedIndexChanged));
....
}
protected void ddSelectedIndexChanged(object sender, EventArgs e)
{
....
}
事件处理程序确实被调用,但sender参数为null,e为空。 有谁知道如何克服这个问题?
安德鲁
答案 0 :(得分:1)
无法从DHTML事件中获取事件参数,因为事件处理程序是常规的EventHandler类。另一种方法是从IHTMLEventObj获取参数,该对象包含与HtmlElementEventArgs相同的事件参数:
private void Element_OnChange(object sender, EventArgs e)
{
IHTMLEventObj ev = (webBrowser1.Document.Window.DomWindow as IHTMLWindow2).@event;
}
答案 1 :(得分:0)
您可以使用MSHTML.dll作为参考。像这样:
首先将您的清单声明为:
Private WithEvents list1 As MSHTML.HTMLSelectElement
然后在表格sub:
Dim htmldoc As MSHTML.HTMLFormElement = WebBrowser1.Document.DomDocument.getElementById("f")
list= htmldoc.item("...")
AddHandler list.onchange, AddressOf ddSelectedIndexChanged