使用 setattribute 选择下拉列表的值时未触发 Onchange 事件

Posted

技术标签:

【中文标题】使用 setattribute 选择下拉列表的值时未触发 Onchange 事件【英文标题】:Onchange event not triggered while using setattribute to select value of drop down 【发布时间】:2019-03-04 09:50:46 【问题描述】:

我正在尝试使用 Windows 窗体应用程序来自动执行一些浏览器(Internet Explorer)任务。

在这里,我试图从可用的下拉列表中选择一个值,这是通过使用webbrowser1.set attribute("","") 选项实现的。

但是一旦我通过这种方式选择了该选项,该下拉文本框的 on change 事件就不会被触发,而当我返回并手动选择选项时它工作正常。

因此,如果我使用 set 属性选项,这里不会触发 onchange 事件,所以有人可以建议我如何选择所需的值并仍然触发 onchange 事件。

下面是sn-p:

private void button4_Click(object sender, EventArgs e) 
    webBrowser1.Document
               .GetElementById("ctl00$MainContentPlaceHolder$ddl_Reports")
               .SetAttribute("value", "EmployeeInformationReport"); 

请建议?

【问题讨论】:

【参考方案1】:

您应该在 DocumentCompleted 事件之后使用文档的 AttachEventHandler api 附加到事件处理程序:

private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)

    webBrowser1.Document.AttachEventHandler("nameoftheevent", eventHandler);

private void eventHandler(object sender, EventArgs e)

    //Do whatever you want

【讨论】:

以上是关于使用 setattribute 选择下拉列表的值时未触发 Onchange 事件的主要内容,如果未能解决你的问题,请参考以下文章

在下拉列表中选择值时,如何将 Gridview 的所有行设为可编辑模式

Pyqt:选择某些下拉值的值时使QLabel消失

使用与第一个下拉列表相同的值填充第二个下拉列表

从 Thymeleaf 下拉列表中获取选定的值

在下拉列表中选择特定值时如何在联系表单 7 中启用字段

仅当它在 AngularJs 中有值时才需要下拉