2010-05-28 85 views
2

在C#WebBrowser控件中,我使用w.RenderBeginTag(HtmlTextWriterTag.Select)生成了一個包含多個OPTION元素的SELECT HtmlElement。如何在C#webBrowser控件中獲取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爲空。 有誰知道如何解決這個問題?

安德魯

回答

1

這是不可能得到從DHTML事件的事件參數,因爲事件處理程序是一般的事件處理程序類。另一種方法是擺脫IHTMLEventObj的參數,這個對象包含相同的事件參數HtmlElementEventArgs:

private void Element_OnChange(object sender, EventArgs e) 
{ 
    IHTMLEventObj ev = (webBrowser1.Document.Window.DomWindow as IHTMLWindow2)[email protected]; 
} 
0

您可以使用MSHTML.DLL您參考。就像這樣:

首先declarate列表爲:

Private WithEvents list1 As MSHTML.HTMLSelectElement 

然後在形式上子:

Dim htmldoc As MSHTML.HTMLFormElement = WebBrowser1.Document.DomDocument.getElementById("f") 
list= htmldoc.item("...") 
AddHandler list.onchange, AddressOf ddSelectedIndexChanged 
相關問題