Как получить значение SELECT HtmlElement в элементе управления C # webBrowser - PullRequest
2 голосов
/ 28 мая 2010

В элементе управления C # WebBrowser я сгенерировал элемент SELECT HtmlElement с несколькими элементами OPTION, используя w.RenderBeginTag (HtmlTextWriterTag.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 равен нулю, а e пусто. Кто-нибудь знает, как преодолеть эту проблему?

Andrew

Ответы [ 2 ]

1 голос
/ 01 июня 2010

Невозможно получить параметры события из события DHTML, потому что обработчик события является общим классом EventHandler. Альтернативный способ - получить параметры из IHTMLEventObj, этот объект содержит те же параметры события, что и HtmlElementEventArgs:

private void Element_OnChange(object sender, EventArgs e)
{
    IHTMLEventObj ev = (webBrowser1.Document.Window.DomWindow as IHTMLWindow2).@event;
}
0 голосов
/ 10 января 2018

Вы можете использовать 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
...