1

我在 Visual Studio 2012 Ultimate 中使用 .NET 4.5 开发了一个 Windows 8 应用程序。

我遇到的问题是,如果我可以在代码中说 TextBox 的文本值,则 OnChanged 事件会以一种不可预测的方式被触发,并且 OnChanged 事件处理程序中的代码会在我不希望它时被触发。

例如

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

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

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

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

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

4

2 回答 2

2

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

于 2012-11-12T10:51:12.963 回答
0

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

此问题已向应用热线报告,希望很快得到解决。

于 2012-11-28T18:00:27.843 回答