我正在开发.Net紧凑框架。根据需要,我们有下拉框和文本框;当用户从下拉列表中选择值,然后选定的索引发生变化时,事件触发,值在文本框中更新。现在假设用户在文本框中输入值,那么我们需要再次设置下拉选择索引。
因此,在上面的场景中,它转到了递归。
请帮我解决这个问题。
发布于 2014-10-20 12:51:19
我想到了两个简单的解决方案:
a)标志
使用一个简单的变量_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
将是一个合适的代表。
https://stackoverflow.com/questions/26465911
复制相似问题