2012-11-12 103 views
1

我已经开发了一个在Visual Studio 2012中使用.NET 4.5的Windows 8应用程序。Windows 8应用程序异步事件

我的问题是,如果我能的文本值可以说在代码中一个TextBox给onChanged事件被炒鱿鱼的东西似乎是不可预知的方式,并在onChanged事件处理函数的代码被炒鱿鱼的时候,不想要它。

例如

在onChanged事件处理函数,我可能有一些代码,更新应用程序的状态为“编辑..”当用户改变文本框的文本。但是,如果我自己在代码中更改文本,我不希望更改状态。

所以我创建了一个名为“更新”的全局变量,它控制着OnChanged事件中的代码是否可以运行。

我将更新设置为true,然后将textbox文本属性设置为某个值并将Updating变量设置为false。问题在于,在将更新变量设置为false导致事件处理程序中的代码被触发后,TextBox的OnChanged事件似乎会被触发。

我想这与Win 8应用程序的异步本质有关。

有谁知道我该如何解决这个问题?关于这个behvaiour的一些背景信息也会有所帮助。

回答

0

我有同样的行为,不知道如何解决它。我还有一个全局变量IsUpdating,它是在编程式更新textbox.Text期间设置的,它旨在退出TextChanged事件。但正如阿迪在上面提到的那样。这些事件在离开更新方法后触发,所以IsUpdating被重置为false。结果事件完全执行并且我的修改标志被设置。

此问题已报告给应用程序热线,并且很快有望解决。

2

为什么在更新文本之前不删除事件处理程序并在之后添加它?

+0

我也试过。问题在于事件重新分配后,控件接收到更改的消息。在重新分配事件处理程序之前,我需要等待它来处理事件消息。 –

+1

你能显示一些代码吗? – Tamay

相关问题