禁用TextChanged函数wpf

时间:2015-12-11 09:58:46

标签: c# wpf function

有没有办法禁用TextChanged方法?我必须在TextChanged方法中用2个计算值填充2个文本框(名为A,B)但是当我在A中键入一个数字时,它会计算一个值并用它填充B,但是然后B textchanged方法将执行A. ...最后我得到StackOverflowException 有代码:

private void AB_TextChanged(object sender, TextChangedEventArgs e)
    {
        if (sender == A)
        {
            B.Text = (Convert.ToDouble(A.Text)*27).ToString("0.00");
        }
        else if (sender == B)
        {
            A.Text = (Convert.ToDouble(B.Text) /13).ToString("0.00");
        }
    }

有什么想法吗?

编辑:我想只禁用一个方法调用

1 个答案:

答案 0 :(得分:3)

您可以使用一个变量来确定您当前是否正在设置值。只有你不这样做,设置它。

private bool settingValue = false;

private void AB_TextChanged(object sender, TextChangedEventArgs e)
{
    if(!settingValue){
        settingValue = true;
        if (sender == A)
        {
            B.Text = (Convert.ToDouble(A.Text)*27).ToString("0.00");
        }
        else if (sender == B)
        {
            A.Text = (Convert.ToDouble(B.Text) /13).ToString("0.00");
        }
        settingValue = false;
    }
}

首次调用该方法时,settingValuefalse。然后立即将值设置为true 设置Text时,将再次执行事件处理程序。但这次它什么都不做,因为settingValuetrue 然后第一次执行结束,将settingValue设置回false