В C # я запускаю элемент управления WebBrowser (WB) в потоке на стороне сервера и хочу отслеживать (прослушивать) события «onpropertychange».Я могу успешно прикрепить метод подписи делегата .NET, который выполняется при изменении свойства, но объекты sender и e оба равны null при каждом вызове qEventHndlr, поэтому я не знаю, какое свойство изменилось назапустить событие.el - это HTMLElement, который повторяется в цикле foreach для присоединения обработчика событий к каждому элементу для мониторинга (прослушивания).
el.AttachEventHandler("onpropertychange", qEventHndlr); // in the foreach loop
public void qEventHndlr(Object sender, EventArgs e) {…} // the event handler
В документации указано, что класс EventArgs;«Этот класс не содержит данных о событиях; он используется событиями, которые не передают информацию о состоянии обработчику событий при возникновении события. Если обработчику событий требуется информация о состоянии, приложение должно извлечь класс из этого класса для хранения данных«.Также кажется (я не уверен и не проверял), что отправитель заполняется только для подмножества событий WB, а не onpropertychange.
Итак, я подумал, что если я не смогу получить информацию об идентификаторев объектах send или e я мог бы использовать анонимный метод в AttachEventHandler и затем передать уникальный программируемый строковый параметр во время выполнения методу, встроенному в вызов метода-обработчика события.
el.AttachEventHandler("onpropertychange", delegate(Object sender, EventArgs e) { anonoMeth(elID); });
public void anonoMeth(string specificProperty) {..}
Компилятор принял синтаксисоднако, даже если строка elID изменяется в цикле foreach, используется только первое значение итерации, поэтому при вызове anonoMeth (string specificProperty) с каждым событием onpropertychange specificProperty имеет одинаковое значение, поскольку к соответствующему идентификатору был присоединен тот же самый elIDelement.
Я еще не пробовал методы расширения и хотел опубликовать это, чтобы увидеть, сталкивался ли кто-либо с подобными проблемами (и, надеюсь, найдет решение).Я предпочитаю не прибегать к C ++, если мне это абсолютно не нужно.