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.