【发布时间】:2015-03-27 18:02:09
【问题描述】:
在表单上,我有两个控件,A 和 B。每个控件在其值更改时都发送一个事件。表单通过将 B 设置为某个值来处理 A 的 ValueChanged 事件,并通过设置 A 的值来处理 B 的 ValueChanged。
我是否需要做一些特别的事情来防止无限循环,用户更改 A,发送导致 B 更新的 ValueChanged 事件,现在向它发送 ValueChanged 事件,导致 A 更新...
我知道一些 GUI 工具包,例如 Qt,在基础架构中内置了逻辑来防止这样的循环。 (参见关于 Qt4 的 Blanchette 和 Summerfield 书籍第 1 章中的“输入您的年龄”示例。)一些较旧的工具包要求程序员定义和管理一个标志来检测递归。对于 WinForms,我还没有在任何地方阅读过明确的声明。
举个具体的例子,假设 A 和 B 是 NumericUpDown 控件,以华氏和摄氏度显示温度。当用户更改一个时,另一个更新以显示另一个系统中的相应温度。
【问题讨论】: