mshtml fireevent onchange 不触发

mshtml fireevent onchange not firing

我无法在 mshtml 中触发 "onchange" 事件。你能告诉我我做错了什么吗?

HTMLSelectElement element = (HTMLSelectElement)this.HTMLDocument.all.item(controlId, 0);
IHTMLElement e = element as IHTMLElement;
IHTMLDocument4 doc = e.document as IHTMLDocument4;
object dummy = null;
object eventObj = doc.CreateEventObject(ref dummy);
HTMLSelectElementClass se = element as HTMLSelectElementClass;
se.FireEvent("onchange", ref eventObj);

我将变量 "se" 设为 null。我从另一个 link http://www.itwriting.com/phorum/read.php?3,1507

那里得到了这段代码

谁能帮我解决这个问题。

谢谢, 山姆

由 COM 调用生成的运行时可调用包装对象 HTMLDocument.all.item 可以将接口转换转换为 QueryInterface 调用。但是 RCW 不知道如何转换为 HTMLSelectElementClass 之类的托管 class,因此它 returns null。

不是转换为 HTMLSelectElementClass,而是转换为 IHTMLElement3 以调用 fireEvent。

顺便说一句,您的代码无法在 IE11 模式下运行,因为 document.all 已弃用。请改用 IHTMLDocument3::getElementById。

盛提到的那些我都试过了,但都没有用。

此问题已通过为 "onchange" 注入 javascript 代码并执行来解决。成功了。