递归+ .Net Compact框架

时间:2014-10-20 12:37:47

标签: .net

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

所以在上面这个场景中,它进行了递归。

请帮我解决这个问题。

1 个答案:

答案 0 :(得分:1)

我想到了两个简单的解决方案:

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将成为合适的代表。