【问题标题】:How to get the value of a SELECT HtmlElement in C# webBrowser control如何在 C# webBrowser 控件中获取 SELECT HtmlElement 的值
【发布时间】:2011-02-25 02:55:27
【问题描述】:

在 C# WebBrowser 控件中,我使用 w.RenderBeginTag(HtmlTextWriterTag.Select) 生成了一个带有许多 OPTION 元素的 SELECT HtmlElement。

当用户更改它时,我需要获取选择的值,因此在 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 为空。 有谁知道如何解决这个问题?

安德鲁

【问题讨论】:

    标签: c# controls browser


    【解决方案1】:

    您可以使用 MSHTML.dll 作为参考。像这样:

    首先将您的列表声明为:

    Private WithEvents list1 As MSHTML.HTMLSelectElement
    

    然后在表单中:

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

    【讨论】:

      【解决方案2】:

      不可能从 DHTML 事件中获取事件参数,因为事件处理程序是通用的 EventHandler 类。另一种方法是从 IHTMLEventObj 获取参数,该对象包含与 HtmlElementEventArgs 相同的事件参数:

      private void Element_OnChange(object sender, EventArgs e)
      {
          IHTMLEventObj ev = (webBrowser1.Document.Window.DomWindow as IHTMLWindow2).@event;
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-01-30
        • 2020-05-26
        • 1970-01-01
        • 2012-10-26
        • 2011-01-18
        • 2012-01-22
        • 1970-01-01
        • 2013-03-27
        相关资源
        最近更新 更多