如何在C#webBrowser控件中获取SELECT HtmlElement的值

时间:2010-05-28 12:48:13

标签: c# controls browser

在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为空。 有谁知道如何克服这个问题?

安德鲁

2 个答案:

答案 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