首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RaiseEvent("onchange")

RaiseEvent("onchange")
EN

Stack Overflow用户
提问于 2011-05-18 20:24:14
回答 3查看 13.7K关注 0票数 8

我有一个winform和一个WebBrowser控件,并且我正在更改select HTML控件中的一个选项。

代码语言:javascript
复制
webBrowser1.Document
    .GetElementsByTagName("select")[4]
    .GetElementsByTagName("option")[13]
    .SetAttribute("selected", "true");

现在,它可以工作并选择所需的选项,但不会触发onchange事件。select没有元素id,但它有一个类名。

我试过了:

代码语言:javascript
复制
webBrowser1.Document
    .GetElementsByTagName("select")[4]
    .RaiseEvent("onchange");

代码语言:javascript
复制
webBrowser1.Document
    .GetElementsByTagName("select")[4]
    .GetElementsByTagName("option")[13]
    .RaiseEvent("onchange");

但都是徒劳的。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-05-19 04:21:31

在选择一个选项后,我尝试并发送了一个TAB键,它引发了onchange事件。

代码语言:javascript
复制
    webBrowser1.Document.GetElementsByTagName("select")[4].Focus();
    webBrowser1.Document.GetElementsByTagName("select")[4]
.GetElementsByTagName("option")[13].SetAttribute("selected", "true");
    SendKeys.Send("{TAB}");

现在一切都好了。

票数 3
EN

Stack Overflow用户

发布于 2011-05-18 22:56:42

尝试引发onChange事件:例如RaiseEvent("onChange");

编辑:它将在选择元素上,而不是在选项上。

EDIT2:

代码语言:javascript
复制
var selectControlElement = webBrowser1.Document
    .GetElementsByTagName("select")[4];
selectControlElement.RaiseEvent("onChange");

此外,检查selectControlElement是否有任何事件也是值得的。

另一种选择(未经我测试)

代码语言:javascript
复制
object obj = selectControlElement.DomElement;
System.Reflection.MethodInfo mi = obj.GetType().GetMethod("onchange");
mi.Invoke(obj, new object[0]);

也可以试试

代码语言:javascript
复制
selectControlElement.InvokeMember("onchange");
票数 1
EN

Stack Overflow用户

发布于 2018-01-10 19:24:42

有关详细信息,请参阅下面的代码。

代码语言:javascript
复制
    void SetComboItem(string id, string value)
    {

        Forms.HtmlElement ddRouteSelected = wBrowser.Document.GetElementById(id);
        foreach (Forms.HtmlElement item in ddRouteSelected.Children)
        {
            if (item.InnerText != null && item.InnerText.ToLower().Equals(value.ToLower()))
            {
                item.SetAttribute("selected", "Selected");
                item.SetAttribute("value", value);
                ddRouteSelected.InvokeMember("onchange");
                break;
            }
        }
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6044607

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档