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

Javascript C#:如何对具有附加事件处理程序(没有堆栈溢出)的属性执行方法,javascript,c#,events,c#-4.0,dom-events,Javascript,C#,Events,C# 4.0,Dom Events,设置: 我在WebBrowser控件上附加了一个事件处理程序,如下所示 ChatInputElement.AttachEventHandler("onpropertychange", OnInputChange); 那部分很完美。。。但我正在处理的站点有时会将编码信息输入到输入区域,这缺乏良好的人类可读体验 因此,我试图利用“onpropertychange”事件触发一个方法,对输入框中的数据进行URL解码。不幸的是,这会导致堆栈溢出,因为在解码URL时触发了“onpropertychange

设置: 我在WebBrowser控件上附加了一个事件处理程序,如下所示

ChatInputElement.AttachEventHandler("onpropertychange", OnInputChange);
那部分很完美。。。但我正在处理的站点有时会将编码信息输入到输入区域,这缺乏良好的人类可读体验

因此,我试图利用“onpropertychange”事件触发一个方法,对输入框中的数据进行URL解码。不幸的是,这会导致堆栈溢出,因为在解码URL时触发了“onpropertychange”事件

问题:
如何在不导致堆栈溢出的情况下对输入框中的数据进行解码?是否有一种方法可以检测URL编码的材料,因为输入框确实包含有时不需要解码的数据。

您可以在处理程序内设置一个类级标志,如果设置了该标志,则退出处理程序。

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


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

在退出后,不要忘记在不进行修改的情况下重置标志。否则,当用户第二次编辑字段时,解码将不会启动。感谢您的回复,结合Arjen的回答,我能够完成我想要的。我已经使用堆栈溢出大约一年了,当我最终找不到问题的答案时。。。我决定做一个账目。很高兴我这么做了顺便说一句,注销事件、进行更改,然后再次注册事件处理程序是个坏主意吗?这似乎也很有效…谢谢你的回复,阿扬。这确实有助于推动事态的发展我知道这个评论会有点过时,但我注意到我想纠正的问题中有一个错误。我在“HtmleElement”上附加了一个事件处理程序,而不是WebBrowser控件“ChatInputElement”是“HtmleElement”。抱歉给您带来任何困惑。:)