我在visual studio 2012旗舰版中使用.NET 4.5开发了一个Windows8应用程序。
我遇到的问题是,如果可以,假设代码中的TextBox的文本值,OnChanged事件将被激发,这似乎是一种不可预测的方式,而OnChanged事件处理程序中的代码将在我不希望它被激发时被激发。
例如
在OnChanged事件处理程序中,我可能有一些代码将应用程序状态更新为"Editing..“当用户更改TextBox中的文本时。但是,如果我自己在代码中更改文本,我不希望更改状态。
因此,我创建了一个名为"Updating“的全局变量,它控制OnChanged事件中的代码是否可以运行。
我将updating设置为true,然后将textbox text属性设置为某个值,并将Updating变量设置为false。问题是,在我将Updating变量设置为false之后,TextBox的OnChanged事件似乎被激发了,导致事件处理程序中的代码被激发。
我猜这与Win 8应用程序的异步特性有关。
有人知道我如何解决这个问题吗?关于这一行为的一些背景信息也会有所帮助。
发布于 2012-11-29 02:00:28
我有相同的行为,不知道如何解决它。我还有一个全局变量IsUpdating,它是在以编程方式更新textbox.Text期间设置的,目的是退出TextChanged事件。但正如阿迪上面提到的。这些事件在离开update方法后触发,因此IsUpdating被重置为false。因此,事件完全执行,并且设置了my Modified-Flag。
这个问题已经报告给了app热线,希望很快就能解决。
发布于 2012-11-12 18:51:13
为什么不在更新文本和添加文本之前删除eventhandler?
https://stackoverflow.com/questions/13337301
复制相似问题