我无法在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。我从另一个链接http://www.itwriting.com/phorum/read.php?3,1507获得了这段代码
有人能帮我吗。
谢谢你,山姆
发布于 2015-06-19 14:59:56
我试过了盛提到的所有这些,但都没有成功。
通过为"onchange“注入javascript代码并执行该问题,解决了这个问题。啊,真灵。
发布于 2015-06-06 19:54:00
由COM调用(如HTMLDocument.all.item )生成的运行时可调用包装对象可以将接口转换为QueryInterface调用。但是RCW不知道如何转换为像HTMLSelectElementClass这样的托管类,因此它返回null。
与其将其转换为HTMLSelectElementClass,不如将其转换为IHTMLElement3以调用fireEvent。
顺便说一句,您的代码在IE11模式下不工作,因为不推荐document.all。改用IHTMLDocument3 3::getElementById。
https://stackoverflow.com/questions/30641304
复制相似问题