2014-10-20 83 views
0

我正在研究.Net紧凑框架。 根据要求我们有下拉和文本框; 当用户从下拉菜单中选择值时,选定的索引更改事件触发,并在文本框中更新值。 现在假设用户在文本框中输入了值,那么我们需要再次设置下拉选择索引。Recurssion + .Net Compact框架

所以有了这个上面的场景它去了递归。

请帮我解决这个问题。

回答

1

两个简单的解决方案,来我的脑海:

一)一个标志
使用一个简单的变量_preventRecursion指示哪些更新应该发生,例如像这样:

private volatile bool _preventRecursion; 

public void TextBox_TextChanged(...) 
{ 
    if (!_preventRecursion) 
    { 
     _preventRecursion = true; 
     try 
     { 
      // Do stuff to update the combo box. 
     } 
     finally 
     { 
      _preventRecursion = false; 
     } 
    } 
} 

添加与组合框的事件处理程序相同的代码。

B)手动附加的事件处理程序
如果您手动附加事件处理程序的代码,你可以当事件可控制:

public void TextBox_TextChanged(...) 
{ 
    comboBox1.SelectedIndexChanged -= selectedIndexChangedEventHandler; 
    try 
    { 
     // Do stuff to update the combo box 
    } 
    finally 
    { 
     comboBox1.SelectedIndexChanged += selectedIndexChangedEventHandler; 
    } 
} 

selectedIndexChangedEventHandler将是一个适当的委托。