0
我正在研究.Net紧凑框架。 根据要求我们有下拉和文本框; 当用户从下拉菜单中选择值时,选定的索引更改事件触发,并在文本框中更新值。 现在假设用户在文本框中输入了值,那么我们需要再次设置下拉选择索引。Recurssion + .Net Compact框架
所以有了这个上面的场景它去了递归。
请帮我解决这个问题。
我正在研究.Net紧凑框架。 根据要求我们有下拉和文本框; 当用户从下拉菜单中选择值时,选定的索引更改事件触发,并在文本框中更新值。 现在假设用户在文本框中输入了值,那么我们需要再次设置下拉选择索引。Recurssion + .Net Compact框架
所以有了这个上面的场景它去了递归。
请帮我解决这个问题。
两个简单的解决方案,来我的脑海:
一)一个标志
使用一个简单的变量_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
将是一个适当的委托。