C #: как выполнить метод для свойства, к которому прикреплен обработчик события (без переполнения стека) - PullRequest
2 голосов
/ 29 ноября 2010

Настройка: я прикрепил обработчик событий к элементу управления WebBrowser примерно так ...

ChatInputElement.AttachEventHandler("onpropertychange", OnInputChange);

Эта часть работает отлично ... Но сайт, на котором я работаю, вводит URLE-кодированную информацию вИногда область ввода, в которой не хватает хорошего восприятия человеком.

Поэтому я пытался воспользоваться преимуществом события "onpropertychange", чтобы запустить метод, который будет URL-кодировать данные в поле ввода.К сожалению, это вызывает переполнение стека из-за события «onpropertychange», возникающего при декодировании URL-адреса ...

Вопрос: Как выполнить URL-декодирование данных в поле ввода, не вызывая переполнение стека?Есть ли способ обнаружить URLEncoded материал, потому что поле ввода содержит данные, которые не нужно время от времени декодировать.

Ответы [ 2 ]

4 голосов
/ 29 ноября 2010

Вы можете установить флаг уровня класса внутри вашего обработчика, а затем выйти из обработчика, если флаг установлен.

1 голос
/ 29 ноября 2010

Сохраните результат для сравнения в последующих вызовах обработчиков:

Один из способов предотвратить цикл - сохранить декодированный URL-адрес в переменной поля перед установкой свойства.Затем установите свойство.При втором вызове обработчика событий сравните сохраненное поле с текущим значением свойства.Если это то же самое, вы знаете, что вы уже URLDecoded его, и вы выходите из обработчика событий без изменения свойства.

...