mshtml fireevent onchange не стреляет

Я не могу запустить событие "onchange" в mshtml. Подскажите, пожалуйста, что я здесь делаю не так.

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", как ноль. Я получил этот фрагмент кода по другой ссылке http://www.itwriting.com/phorum/read.php?3,1507

Кто-нибудь может мне с этим помочь.

Спасибо Сэм

2 ответа

Решение

Я перепробовал все те, которые упоминал Шэн, но не работал.

Эта проблема была решена путем введения кода javascript для "onchange" и его выполнения. Это сработало.

Исполняемые объекты Callable Wrapper, сгенерированные вызовами COM, такими как HTMLDocument.all.item, могут преобразовывать приведение интерфейса к вызовам QueryInterface. Но RCW не знает, как преобразовать в управляемый класс, такой как HTMLSelectElementClass, и поэтому возвращает ноль.

Вместо приведения к HTMLSelectElementClass приведите к IHTMLElement3, чтобы вызвать fireEvent.

Кстати, ваш код не работает в режиме IE11, так как document.all устарел. Вместо этого используйте IHTMLDocument3::getElementById.

Другие вопросы по тегам