2008-11-30 51 views
1

我在页面上有几个控件。它恰好是一个Silverlight页面,但我不认为这对于这个问题很重要。多个控件的单事件提升模式

当控件值发生变化时,会引发更改事件。在这种情况下,我会进行计算并更改其他控件之一的值。这反过来导致另一个控件引发一个改变的事件,这又导致计算再次完成(重复)。

即更改任何控件的值将导致执行计算并且更改另一个控件的值 - 总是在此用例中。

我最初尝试解决这个问题涉及使用布尔标志并将其重置为第二个事件中的默认值。然而,这并没有工作,并感到很高兴。

你会如何去阻止第二次计算?

回答

1

布尔标志太,我认为......不知道为什么它不为你工作。它会是这样的:

private bool InEvent = false; 
public void MyEventHandler(object sender, EventArgs e) 
{ 
    if (InEvent) 
     return; 
    InEvent = true; 
    // Do stuff here 
    InEvent = false; 
} 

如果你害怕多线程的,则可以使用lock语句的地方,但我不认为是这样。另外,您可能想要尝试......最后确保InEvent始终设置为false。

+0

这是类似于我说的,除了有2个事件,因此这将是MyEventHanderA()和MyEventHandlerB()。每个调用一个通用的计算函数。 – Guy 2008-11-30 20:48:34

相关问题