C#:如何在具有附加事件处理程序的属性上执行方法(没有堆栈溢出)

时间:2010-11-29 01:34:42

标签: c# javascript events javascript-events c#-4.0

设定: 我在WebBrowser控件上附加了一个事件处理程序,就像这样...

ChatInputElement.AttachEventHandler("onpropertychange", OnInputChange);

那部分工作得很完美......但是我正在弄乱的网站有时会将输入URLEncoded信息输入到输入区域,缺乏良好的人类可读体验。

所以我试图利用“onpropertychange”事件来触发一个URLDecode数据输入框中的方法。不幸的是,当我解码URL时,由于“onpropertychange”事件而导致堆栈溢出...

问题: 如何在输入框中完成URLDecoding数据,而不会导致Stack Overflow?有没有办法检测URLEncoded材质,因为输入框确实包含有时不需要解码的数据。

2 个答案:

答案 0 :(得分:4)

您可以在处理程序中设置类级别标志,如果设置了标志,则退出处理程序。

答案 1 :(得分:1)

将结果存储在后续处理程序调用中进行比较:

防止循环的一种方法是在设置属性之前将解码的URL存储在字段变量中。然后,设置属性。在第二次调用事件处理程序时,将存储的字段与属性的当前值进行比较。如果它是相同的,您知道您已经对其进行了URL解码,并且在不修改属性的情况下退出事件处理程序。