2012-01-30 107 views
0

假设我有两个事件:处理同步变量的最佳设计模式是什么?

Public Sub Control1Updated() Handles control1.TextChanged 
    control2.Text = SomeFunction(control1.Text) 
End Sub 

Public Sub Control2Updated() Handles control2.TextChanged 
    control1.Text = SomeFunction(control2.Text) 
End Sub 

基本上{control1.Text,control2.Text}和{control2.Text,control1.Text}的配对应该是相同的。如果control1.Text更改为“a”,则control2.Text始终为“b”。如果control2.Text更改为“b”,则control1.Text始终为“a”。我如何在事件没有进入无限循环的情况下实现这一目标? [我能想到的最好的方法是检查另一个control.Text是否已经是所需的值]。假设支票很贵,任何人都可以想出更好的方法来确保同步?

+0

从代码设置文本时,验证不会触发。你不需要任何模式。 – 2012-01-30 22:42:33

+0

@亨克,谢谢修正它在上面的示例代码中... – Denis 2012-01-30 22:46:43

回答

1

您可以维护一个名为alreadyHadling的标志,并在处理事件时相应地设置/取消设置。如果标志被设置,则在事件处理程序的开始处执行提前退出。

相关问题